/*++

Copyright (c) 2013 Minoca Corp.

    This file is licensed under the terms of the GNU General Public License
    version 3. Alternative licensing terms are available. Contact
    info@minocacorp.com for details. See the LICENSE file at the root of this
    project for complete licensing information.

Module Name:

    timetest.c

Abstract:

    This module tests various aspects of the timekeeping functionality in the
    runtime library.

Author:

    Evan Green 6-Aug-2013

Environment:

    Test

--*/

//
// ------------------------------------------------------------------- Includes
//

#define RTL_API

#include <minoca/lib/types.h>
#include <minoca/lib/status.h>
#include <minoca/lib/rtl.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//
// ---------------------------------------------------------------- Definitions
//

#define COMPLETE_DATE_FORMAT "%Y %m %d %H %M %S %J %w %j"
#define COMPLETE_DATE_FORMAT2 "%Y %B %e %I:%M:%S %p   %t  %axy%%z%j"
#define EXHAUSTIVE_DATE_FORMAT                                              \
    "%a %A %b %B %c %C %d %D %e %F %g %G %h %H %I %j %m %M %p %P %r "       \
    "%R %S %T %u %U %V %w %W %x %X %y %Y %z %Z %%.%n%t."

//
// ------------------------------------------------------ Data Type Definitions
//

typedef struct _CALENDAR_TEST {
    LONGLONG Seconds;
    CALENDAR_TIME GmtTime;
    CALENDAR_TIME LocalTime;
} CALENDAR_TEST, *PCALENDAR_TEST;

typedef struct _DATE_FORMAT_TEST {
    CALENDAR_TIME CalendarTime;
    UINTN StringSize;
    PSTR Format;
    PSTR Result;
} DATE_FORMAT_TEST, *PDATE_FORMAT_TEST;

//
// ----------------------------------------------- Internal Function Prototypes
//

VOID
TestTimeZoneLockFunction (
    );

//
// -------------------------------------------------------------------- Globals
//

//
// Store the compiled pacific time zone data for the purposes of the test.
//

UCHAR TestTimeZoneData[] = {
    0x54, 0x6D, 0x5A, 0x6E, 0x2C, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
    0x24, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00,
    0x04, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
    0xA3, 0x03, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00,
    0x7E, 0x07, 0x7F, 0x07, 0x02, 0x02, 0x00, 0x00, 0x20, 0x1C, 0x00, 0x00,
    0x01, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
    0x5B, 0x00, 0x00, 0x00, 0x7E, 0x07, 0x7F, 0x07, 0x09, 0x02, 0x00, 0x00,
    0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x96, 0x07, 0x96, 0x07,
    0x01, 0x01, 0x09, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x10, 0x0E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00,
    0x99, 0x07, 0x99, 0x07, 0x07, 0x01, 0x0E, 0x00, 0x70, 0x43, 0x01, 0x00,
    0x03, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
    0x5B, 0x00, 0x00, 0x00, 0x99, 0x07, 0x99, 0x07, 0x08, 0x01, 0x1E, 0x00,
    0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0xAF, 0x07, 0xD6, 0x07,
    0x09, 0x02, 0x00, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00,
    0xAF, 0x07, 0xB5, 0x07, 0x03, 0x02, 0x00, 0x00, 0x20, 0x1C, 0x00, 0x00,
    0x01, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
    0x5B, 0x00, 0x00, 0x00, 0xB6, 0x07, 0xB6, 0x07, 0x00, 0x01, 0x06, 0x00,
    0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00,
    0x1E, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0xB7, 0x07, 0xB7, 0x07,
    0x01, 0x01, 0x17, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x10, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00,
    0xB8, 0x07, 0xC2, 0x07, 0x03, 0x02, 0x00, 0x00, 0x20, 0x1C, 0x00, 0x00,
    0x01, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
    0x5B, 0x00, 0x00, 0x00, 0xC3, 0x07, 0xD6, 0x07, 0x03, 0x03, 0x01, 0x00,
    0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00,
    0x1E, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0xD7, 0x07, 0x0F, 0x27,
    0x02, 0x03, 0x08, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x10, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00,
    0xD7, 0x07, 0x0F, 0x27, 0x0A, 0x03, 0x01, 0x00, 0x20, 0x1C, 0x00, 0x00,
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
    0x5F, 0x00, 0x00, 0x00, 0x9C, 0x07, 0x9C, 0x07, 0x02, 0x01, 0x0E, 0x00,
    0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00,
    0x1E, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x9D, 0x07, 0x9D, 0x07,
    0x00, 0x01, 0x01, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
    0x9E, 0x07, 0xAE, 0x07, 0x03, 0x02, 0x00, 0x00, 0x20, 0x1C, 0x00, 0x00,
    0x01, 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
    0x5F, 0x00, 0x00, 0x00, 0x9E, 0x07, 0xA9, 0x07, 0x08, 0x02, 0x00, 0x00,
    0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0xAA, 0x07, 0xAE, 0x07,
    0x09, 0x02, 0x00, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0x91, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
    0x8C, 0x74, 0xB3, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x8F, 0xFF, 0xFF,
    0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
    0x80, 0x7A, 0x8B, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x8F, 0xFF, 0xFF,
    0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
    0x80, 0x4B, 0x0B, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x8F, 0xFF, 0xFF,
    0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
    0xFF, 0x78, 0xA4, 0xC5, 0x3A, 0x00, 0x00, 0x00, 0x80, 0x8F, 0x62, 0xCA,
    0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0x23, 0x55, 0xCB, 0xFF,
    0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x57, 0x36, 0xCD, 0xFF, 0xFF,
    0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0x8A, 0x17, 0xCF, 0xFF, 0xFF, 0xFF,
    0xFF, 0x01, 0x00, 0x00, 0x00, 0xBE, 0xF8, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF,
    0x01, 0x00, 0x00, 0x00, 0x43, 0xDB, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
    0x00, 0x00, 0x80, 0x76, 0xBC, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
    0x00, 0x00, 0xAA, 0x9D, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00,
    0x80, 0xDD, 0x7E, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
    0x02, 0x50, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0x35,
    0x31, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x69, 0x12,
    0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0x21, 0xD6, 0xE2,
    0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0x1C, 0x8B, 0xE7, 0xFF,
    0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xD5, 0x4E, 0xEB, 0xFF, 0xFF,
    0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0x08, 0x30, 0xED, 0xFF, 0xFF, 0xFF,
    0xFF, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
    0x01, 0x00, 0x00, 0x80, 0x60, 0xE2, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
    0x00, 0x00, 0x00, 0x94, 0xC3, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
    0x00, 0x80, 0x5B, 0x97, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00,
    0x00, 0x80, 0x68, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80,
    0x47, 0x3C, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x53,
    0x67, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x90, 0x0D,
    0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1C, 0xA1, 0x15,
    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x6D, 0x65, 0x72,
    0x69, 0x63, 0x61, 0x2F, 0x4C, 0x6F, 0x73, 0x5F, 0x41, 0x6E, 0x67, 0x65,
    0x6C, 0x65, 0x73, 0x00, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x25, 0x73, 0x54,
    0x00, 0x44, 0x00, 0x53, 0x00, 0x57, 0x00, 0x50, 0x00,
};

CALENDAR_TEST TestCalendarCase[] = {
    {0LL,
     {2001, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {2000, 11, 31, 16, 0, 0, 0, 0, 365, 0}},
    {1LL,
     {2001, 0, 1, 0, 0, 1, 0, 1, 0, 0},
     {2000, 11, 31, 16, 0, 1, 0, 0, 365, 0}},
    {-1LL,
     {2000, 11, 31, 23, 59, 59, 0, 0, 365, 0},
     {2000, 11, 31, 15, 59, 59, 0, 0, 365, 0}},
    {86401LL,
     {2001, 0, 2, 0, 0, 1, 0, 2, 1, 0},
     {2001, 0, 1, 16, 0, 1, 0, 1, 0, 0}},
    {-86400LL,
     {2000, 11, 31, 0, 0, 0, 0, 0, 365, 0},
     {2000, 11, 30, 16, 0, 0, 0, 6, 364, 0}},
    {-1007164800LL,
     {1969, 1, 1, 0, 0, 0, 0, 6, 31, 0},
     {1969, 0, 31, 16, 0, 0, 0, 5, 30, 0}},
    {-1009843200LL,
     {1969, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1968, 11, 31, 16, 0, 0, 0, 2, 365, 0}},
    {-1015545600LL,
     {1968, 9, 27, 0, 0, 0, 0, 0, 300, 0},
     {1968, 9, 26, 17, 0, 0, 0, 6, 299, 1}},
    {-1017792000LL,
     {1968, 9, 1, 0, 0, 0, 0, 2, 274, 0},
     {1968, 8, 30, 17, 0, 0, 0, 1, 273, 1}},
    {-102384000LL,
     {1997, 9, 4, 0, 0, 0, 0, 6, 276, 0},
     {1997, 9, 3, 17, 0, 0, 0, 5, 275, 1}},
    {-1033081200LL,
     {1968, 3, 7, 1, 0, 0, 0, 0, 97, 0},
     {1968, 3, 6, 17, 0, 0, 0, 6, 96, 0}},
    {-1034553600LL,
     {1968, 2, 21, 0, 0, 0, 0, 4, 80, 0},
     {1968, 2, 20, 16, 0, 0, 0, 3, 79, 0}},
    {-1041465600LL,
     {1968, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1967, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-1049414400LL,
     {1967, 9, 1, 0, 0, 0, 0, 0, 273, 0},
     {1967, 8, 30, 17, 0, 0, 0, 6, 272, 1}},
    {-1059609600LL,
     {1967, 5, 5, 0, 0, 0, 0, 1, 155, 0},
     {1967, 5, 4, 17, 0, 0, 0, 0, 154, 1}},
    {-1065225600LL,
     {1967, 3, 1, 0, 0, 0, 0, 6, 90, 0},
     {1967, 2, 31, 16, 0, 0, 0, 5, 89, 0}},
    {107049600LL,
     {2004, 4, 24, 0, 0, 0, 0, 1, 144, 0},
     {2004, 4, 23, 17, 0, 0, 0, 0, 143, 1}},
    {-1073001600LL,
     {1967, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1966, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {107654400LL,
     {2004, 4, 31, 0, 0, 0, 0, 1, 151, 0},
     {2004, 4, 30, 17, 0, 0, 0, 0, 150, 1}},
    {107740800LL,
     {2004, 5, 1, 0, 0, 0, 0, 2, 152, 0},
     {2004, 4, 31, 17, 0, 0, 0, 1, 151, 1}},
    {107827200LL,
     {2004, 5, 2, 0, 0, 0, 0, 3, 153, 0},
     {2004, 5, 1, 17, 0, 0, 0, 2, 152, 1}},
    {-1078437600LL,
     {1966, 9, 30, 2, 0, 0, 0, 0, 302, 0},
     {1966, 9, 29, 19, 0, 0, 0, 6, 301, 1}},
    {108864000LL,
     {2004, 5, 14, 0, 0, 0, 0, 1, 165, 0},
     {2004, 5, 13, 17, 0, 0, 0, 0, 164, 1}},
    {-1088892000LL,
     {1966, 6, 1, 2, 0, 0, 0, 5, 181, 0},
     {1966, 5, 30, 19, 0, 0, 0, 4, 180, 1}},
    {-1092009600LL,
     {1966, 4, 26, 0, 0, 0, 0, 4, 145, 0},
     {1966, 4, 25, 17, 0, 0, 0, 3, 144, 1}},
    {-1094169600LL,
     {1966, 4, 1, 0, 0, 0, 0, 0, 120, 0},
     {1966, 3, 30, 17, 0, 0, 0, 6, 119, 1}},
    {109468800LL,
     {2004, 5, 21, 0, 0, 0, 0, 1, 172, 0},
     {2004, 5, 20, 17, 0, 0, 0, 0, 171, 1}},
    {-1096581600LL,
     {1966, 3, 3, 2, 0, 0, 0, 0, 92, 0},
     {1966, 3, 2, 18, 0, 0, 0, 6, 91, 0}},
    {-1098223200LL,
     {1966, 2, 15, 2, 0, 0, 0, 2, 73, 0},
     {1966, 2, 14, 18, 0, 0, 0, 1, 72, 0}},
    {110073600LL,
     {2004, 5, 28, 0, 0, 0, 0, 1, 179, 0},
     {2004, 5, 27, 17, 0, 0, 0, 0, 178, 1}},
    {-1117065600LL,
     {1965, 7, 9, 0, 0, 0, 0, 1, 220, 0},
     {1965, 7, 8, 17, 0, 0, 0, 0, 219, 1}},
    {112492800LL,
     {2004, 6, 26, 0, 0, 0, 0, 1, 207, 0},
     {2004, 6, 25, 17, 0, 0, 0, 0, 206, 1}},
    {-1126216800LL,
     {1965, 3, 25, 2, 0, 0, 0, 0, 114, 0},
     {1965, 3, 24, 18, 0, 0, 0, 6, 113, 0}},
    {-1136073600LL,
     {1965, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1964, 11, 31, 16, 0, 0, 0, 4, 365, 0}},
    {-1141344000LL,
     {1964, 10, 1, 0, 0, 0, 0, 0, 305, 0},
     {1964, 9, 31, 16, 0, 0, 0, 6, 304, 0}},
    {-1157666400LL,
     {1964, 3, 26, 2, 0, 0, 0, 0, 116, 0},
     {1964, 3, 25, 18, 0, 0, 0, 6, 115, 0}},
    {-1167696000LL,
     {1964, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1963, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-1169164800LL,
     {1963, 11, 15, 0, 0, 0, 0, 0, 348, 0},
     {1963, 11, 14, 16, 0, 0, 0, 6, 347, 0}},
    {-1173391200LL,
     {1963, 9, 27, 2, 0, 0, 0, 0, 299, 0},
     {1963, 9, 26, 19, 0, 0, 0, 6, 298, 1}},
    {-1173744000LL,
     {1963, 9, 23, 0, 0, 0, 0, 3, 295, 0},
     {1963, 9, 22, 17, 0, 0, 0, 2, 294, 1}},
    {117936000LL,
     {2004, 8, 27, 0, 0, 0, 0, 1, 270, 0},
     {2004, 8, 26, 17, 0, 0, 0, 0, 269, 1}},
    {118368000LL,
     {2004, 9, 2, 0, 0, 0, 0, 6, 275, 0},
     {2004, 9, 1, 17, 0, 0, 0, 5, 274, 1}},
    {-118620000LL,
     {1997, 2, 30, 2, 0, 0, 0, 0, 88, 0},
     {1997, 2, 29, 18, 0, 0, 0, 6, 87, 0}},
    {-118623600LL,
     {1997, 2, 30, 1, 0, 0, 0, 0, 88, 0},
     {1997, 2, 29, 17, 0, 0, 0, 6, 87, 0}},
    {-118627200LL,
     {1997, 2, 30, 0, 0, 0, 0, 0, 88, 0},
     {1997, 2, 29, 16, 0, 0, 0, 6, 87, 0}},
    {-1190332800LL,
     {1963, 3, 14, 0, 0, 0, 0, 0, 103, 0},
     {1963, 3, 13, 16, 0, 0, 0, 6, 102, 0}},
    {-1199232000LL,
     {1963, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1962, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-1220565600LL,
     {1962, 3, 29, 2, 0, 0, 0, 0, 118, 0},
     {1962, 3, 28, 18, 0, 0, 0, 6, 117, 0}},
    {-1235174400LL,
     {1961, 10, 11, 0, 0, 0, 0, 6, 314, 0},
     {1961, 10, 10, 16, 0, 0, 0, 5, 313, 0}},
    {-1243209600LL,
     {1961, 7, 10, 0, 0, 0, 0, 4, 221, 0},
     {1961, 7, 9, 17, 0, 0, 0, 3, 220, 1}},
    {-1244757600LL,
     {1961, 6, 23, 2, 0, 0, 0, 0, 203, 0},
     {1961, 6, 22, 19, 0, 0, 0, 6, 202, 1}},
    {-124502400LL,
     {1997, 0, 21, 0, 0, 0, 0, 2, 20, 0},
     {1997, 0, 20, 16, 0, 0, 0, 1, 19, 0}},
    {-1252015200LL,
     {1961, 3, 30, 2, 0, 0, 0, 0, 119, 0},
     {1961, 3, 29, 18, 0, 0, 0, 6, 118, 0}},
    {-126230400LL,
     {1997, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1996, 11, 31, 16, 0, 0, 0, 2, 365, 0}},
    {-1262304000LL,
     {1961, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1960, 11, 31, 16, 0, 0, 0, 6, 365, 0}},
    {-1265241600LL,
     {1960, 10, 28, 0, 0, 0, 0, 1, 332, 0},
     {1960, 10, 27, 16, 0, 0, 0, 0, 331, 0}},
    {-1279152000LL,
     {1960, 5, 20, 0, 0, 0, 0, 1, 171, 0},
     {1960, 5, 19, 17, 0, 0, 0, 0, 170, 1}},
    {-1284069600LL,
     {1960, 3, 24, 2, 0, 0, 0, 0, 114, 0},
     {1960, 3, 23, 18, 0, 0, 0, 6, 113, 0}},
    {-1293926400LL,
     {1960, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1959, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-131922000LL,
     {1996, 9, 27, 3, 0, 0, 0, 0, 300, 0},
     {1996, 9, 26, 20, 0, 0, 0, 6, 299, 1}},
    {-131932800LL,
     {1996, 9, 27, 0, 0, 0, 0, 0, 300, 0},
     {1996, 9, 26, 17, 0, 0, 0, 6, 299, 1}},
    {-132017400LL,
     {1996, 9, 26, 0, 30, 0, 0, 6, 299, 0},
     {1996, 9, 25, 17, 30, 0, 0, 5, 298, 1}},
    {132537600LL,
     {2005, 2, 15, 0, 0, 0, 0, 2, 73, 0},
     {2005, 2, 14, 16, 0, 0, 0, 1, 72, 0}},
    {-1325462400LL,
     {1959, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1958, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {133581600LL,
     {2005, 2, 27, 2, 0, 0, 0, 0, 85, 0},
     {2005, 2, 26, 18, 0, 0, 0, 6, 84, 0}},
    {-134265600LL,
     {1996, 8, 30, 0, 0, 0, 0, 1, 273, 0},
     {1996, 8, 29, 17, 0, 0, 0, 0, 272, 1}},
    {-1346968800LL,
     {1958, 3, 27, 2, 0, 0, 0, 0, 116, 0},
     {1958, 3, 26, 18, 0, 0, 0, 6, 115, 0}},
    {-1358380800LL,
     {1957, 11, 16, 0, 0, 0, 0, 1, 349, 0},
     {1957, 11, 15, 16, 0, 0, 0, 0, 348, 0}},
    {-1365112800LL,
     {1957, 8, 29, 2, 0, 0, 0, 0, 271, 0},
     {1957, 8, 28, 19, 0, 0, 0, 6, 270, 1}},
    {-136512000LL,
     {1996, 8, 4, 0, 0, 0, 0, 3, 247, 0},
     {1996, 8, 3, 17, 0, 0, 0, 2, 246, 1}},
    {-1379628000LL,
     {1957, 3, 14, 2, 0, 0, 0, 0, 103, 0},
     {1957, 3, 13, 18, 0, 0, 0, 6, 102, 0}},
    {-1383436800LL,
     {1957, 2, 1, 0, 0, 0, 0, 5, 59, 0},
     {1957, 1, 28, 16, 0, 0, 0, 4, 58, 0}},
    {-1386115200LL,
     {1957, 0, 29, 0, 0, 0, 0, 2, 28, 0},
     {1957, 0, 28, 16, 0, 0, 0, 1, 27, 0}},
    {-1387497600LL,
     {1957, 0, 13, 0, 0, 0, 0, 0, 12, 0},
     {1957, 0, 12, 16, 0, 0, 0, 6, 11, 0}},
    {-1388534400LL,
     {1957, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1956, 11, 31, 16, 0, 0, 0, 1, 365, 0}},
    {-1393804800LL,
     {1956, 10, 1, 0, 0, 0, 0, 4, 305, 0},
     {1956, 9, 31, 16, 0, 0, 0, 3, 304, 0}},
    {-1398988800LL,
     {1956, 8, 2, 0, 0, 0, 0, 0, 245, 0},
     {1956, 8, 1, 17, 0, 0, 0, 6, 244, 1}},
    {-1406851200LL,
     {1956, 5, 3, 0, 0, 0, 0, 0, 154, 0},
     {1956, 5, 2, 17, 0, 0, 0, 6, 153, 1}},
    {-1417737600LL,
     {1956, 0, 29, 0, 0, 0, 0, 0, 28, 0},
     {1956, 0, 28, 16, 0, 0, 0, 6, 27, 0}},
    {-1420156800LL,
     {1956, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1955, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-1441922400LL,
     {1955, 3, 24, 2, 0, 0, 0, 0, 113, 0},
     {1955, 3, 23, 18, 0, 0, 0, 6, 112, 0}},
    {-1451692800LL,
     {1955, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1954, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {-145324800LL,
     {1996, 4, 25, 0, 0, 0, 0, 6, 145, 0},
     {1996, 4, 24, 17, 0, 0, 0, 5, 144, 1}},
    {145497600LL,
     {2005, 7, 12, 0, 0, 0, 0, 5, 223, 0},
     {2005, 7, 11, 17, 0, 0, 0, 4, 222, 1}},
    {-1470358800LL,
     {1954, 4, 29, 23, 0, 0, 0, 6, 148, 0},
     {1954, 4, 29, 16, 0, 0, 0, 6, 148, 1}},
    {-1473372000LL,
     {1954, 3, 25, 2, 0, 0, 0, 0, 114, 0},
     {1954, 3, 24, 18, 0, 0, 0, 6, 113, 0}},
    {-1476403200LL,
     {1954, 2, 21, 0, 0, 0, 0, 0, 79, 0},
     {1954, 2, 20, 16, 0, 0, 0, 6, 78, 0}},
    {-1478221200LL,
     {1954, 1, 27, 23, 0, 0, 0, 6, 57, 0},
     {1954, 1, 27, 15, 0, 0, 0, 6, 57, 0}},
    {-1479513600LL,
     {1954, 1, 13, 0, 0, 0, 0, 6, 43, 0},
     {1954, 1, 12, 16, 0, 0, 0, 5, 42, 0}},
    {-1483228800LL,
     {1954, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1953, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-150066000LL,
     {1996, 2, 31, 3, 0, 0, 0, 0, 90, 0},
     {1996, 2, 30, 19, 0, 0, 0, 6, 89, 0}},
    {-150073200LL,
     {1996, 2, 31, 1, 0, 0, 0, 0, 90, 0},
     {1996, 2, 30, 17, 0, 0, 0, 6, 89, 0}},
    {-1514764800LL,
     {1953, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1952, 11, 31, 16, 0, 0, 0, 3, 365, 0}},
    {-1545264000LL,
     {1952, 0, 14, 0, 0, 0, 0, 1, 13, 0},
     {1952, 0, 13, 16, 0, 0, 0, 0, 12, 0}},
    {-1554422400LL,
     {1951, 8, 30, 0, 0, 0, 0, 0, 272, 0},
     {1951, 8, 29, 17, 0, 0, 0, 6, 271, 1}},
    {157766400LL,
     {2006, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {2005, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-1577923200LL,
     {1951, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1950, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-157852800LL,
     {1996, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1995, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-1599091200LL,
     {1950, 4, 1, 0, 0, 0, 0, 1, 120, 0},
     {1950, 3, 30, 17, 0, 0, 0, 0, 119, 1}},
    {-1609459200LL,
     {1950, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1949, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-1639872000LL,
     {1949, 0, 14, 0, 0, 0, 0, 5, 13, 0},
     {1949, 0, 13, 16, 0, 0, 0, 4, 12, 0}},
    {-1640995200LL,
     {1949, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1948, 11, 31, 17, 0, 0, 0, 5, 365, 1}},
    {-164764800LL,
     {1995, 9, 13, 0, 0, 0, 0, 5, 285, 0},
     {1995, 9, 12, 17, 0, 0, 0, 4, 284, 1}},
    {165636000LL,
     {2006, 3, 2, 2, 0, 0, 0, 0, 91, 0},
     {2006, 3, 1, 18, 0, 0, 0, 6, 90, 0}},
    {-1660953600LL,
     {1948, 4, 15, 0, 0, 0, 0, 6, 135, 0},
     {1948, 4, 14, 17, 0, 0, 0, 5, 134, 1}},
    {-1662163200LL,
     {1948, 4, 1, 0, 0, 0, 0, 6, 121, 0},
     {1948, 3, 30, 17, 0, 0, 0, 5, 120, 1}},
    {-1663279200LL,
     {1948, 3, 18, 2, 0, 0, 0, 0, 108, 0},
     {1948, 3, 17, 19, 0, 0, 0, 6, 107, 1}},
    {-166399200LL,
     {1995, 8, 24, 2, 0, 0, 0, 0, 266, 0},
     {1995, 8, 23, 19, 0, 0, 0, 6, 265, 1}},
    {-1664409600LL,
     {1948, 3, 5, 0, 0, 0, 0, 1, 95, 0},
     {1948, 3, 4, 17, 0, 0, 0, 0, 94, 1}},
    {-1665360000LL,
     {1948, 2, 25, 0, 0, 0, 0, 4, 84, 0},
     {1948, 2, 24, 17, 0, 0, 0, 3, 83, 1}},
    {166753800LL,
     {2006, 3, 15, 0, 30, 0, 0, 6, 104, 0},
     {2006, 3, 14, 17, 30, 0, 0, 5, 103, 1}},
    {-1672617600LL,
     {1948, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1947, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-167270400LL,
     {1995, 8, 14, 0, 0, 0, 0, 4, 256, 0},
     {1995, 8, 13, 17, 0, 0, 0, 3, 255, 1}},
    {-1677794400LL,
     {1947, 10, 2, 2, 0, 0, 0, 0, 305, 0},
     {1947, 10, 1, 18, 0, 0, 0, 6, 304, 0}},
    {-1683244800LL,
     {1947, 7, 31, 0, 0, 0, 0, 0, 242, 0},
     {1947, 7, 30, 16, 0, 0, 0, 6, 241, 0}},
    {-1684627200LL,
     {1947, 7, 15, 0, 0, 0, 0, 5, 226, 0},
     {1947, 7, 14, 16, 0, 0, 0, 4, 225, 0}},
    {-1690495200LL,
     {1947, 5, 8, 2, 0, 0, 0, 0, 158, 0},
     {1947, 5, 7, 18, 0, 0, 0, 6, 157, 0}},
    {-1691971200LL,
     {1947, 4, 22, 0, 0, 0, 0, 4, 141, 0},
     {1947, 4, 21, 16, 0, 0, 0, 3, 140, 0}},
    {-1697752800LL,
     {1947, 2, 16, 2, 0, 0, 0, 0, 74, 0},
     {1947, 2, 15, 18, 0, 0, 0, 6, 73, 0}},
    {-1704153600LL,
     {1947, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1946, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-1711584000LL,
     {1946, 9, 7, 0, 0, 0, 0, 1, 279, 0},
     {1946, 9, 6, 16, 0, 0, 0, 0, 278, 0}},
    {-1711663200LL,
     {1946, 9, 6, 2, 0, 0, 0, 0, 278, 0},
     {1946, 9, 5, 18, 0, 0, 0, 6, 277, 0}},
    {-1712185200LL,
     {1946, 8, 30, 1, 0, 0, 0, 1, 272, 0},
     {1946, 8, 29, 17, 0, 0, 0, 0, 271, 0}},
    {-1712188800LL,
     {1946, 8, 30, 0, 0, 0, 0, 1, 272, 0},
     {1946, 8, 29, 16, 0, 0, 0, 0, 271, 0}},
    {-1725573600LL,
     {1946, 3, 28, 2, 0, 0, 0, 0, 117, 0},
     {1946, 3, 27, 18, 0, 0, 0, 6, 116, 0}},
    {-1735689600LL,
     {1946, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1945, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-1740009600LL,
     {1945, 10, 12, 0, 0, 0, 0, 1, 315, 0},
     {1945, 10, 11, 16, 0, 0, 0, 0, 314, 0}},
    {-1742335200LL,
     {1945, 9, 16, 2, 0, 0, 0, 2, 288, 0},
     {1945, 9, 15, 18, 0, 0, 0, 1, 287, 0}},
    {-1742428800LL,
     {1945, 9, 15, 0, 0, 0, 0, 1, 287, 0},
     {1945, 9, 14, 16, 0, 0, 0, 0, 286, 0}},
    {-1743638400LL,
     {1945, 9, 1, 0, 0, 0, 0, 1, 273, 0},
     {1945, 8, 30, 16, 0, 0, 0, 0, 272, 0}},
    {-1743717600LL,
     {1945, 8, 30, 2, 0, 0, 0, 0, 272, 0},
     {1945, 8, 29, 19, 0, 0, 0, 6, 271, 1}},
    {-1744329600LL,
     {1945, 8, 23, 0, 0, 0, 0, 0, 265, 0},
     {1945, 8, 22, 17, 0, 0, 0, 6, 264, 1}},
    {-1744923600LL,
     {1945, 8, 16, 3, 0, 0, 0, 0, 258, 0},
     {1945, 8, 15, 20, 0, 0, 0, 6, 257, 1}},
    {-1744927200LL,
     {1945, 8, 16, 2, 0, 0, 0, 0, 258, 0},
     {1945, 8, 15, 19, 0, 0, 0, 6, 257, 1}},
    {-1745020800LL,
     {1945, 8, 15, 0, 0, 0, 0, 6, 257, 0},
     {1945, 8, 14, 17, 0, 0, 0, 5, 256, 1}},
    {-1745280000LL,
     {1945, 8, 12, 0, 0, 0, 0, 3, 254, 0},
     {1945, 8, 11, 17, 0, 0, 0, 2, 253, 1}},
    {-1746835200LL,
     {1945, 7, 25, 0, 0, 0, 0, 6, 236, 0},
     {1945, 7, 24, 17, 0, 0, 0, 5, 235, 1}},
    {-1747702800LL,
     {1945, 7, 14, 23, 0, 0, 0, 2, 225, 0},
     {1945, 7, 14, 16, 0, 0, 0, 2, 225, 1}},
    {-1751760000LL,
     {1945, 5, 29, 0, 0, 0, 0, 5, 179, 0},
     {1945, 5, 28, 16, 0, 0, 0, 4, 178, 0}},
    {-1754863200LL,
     {1945, 4, 24, 2, 0, 0, 0, 4, 143, 0},
     {1945, 4, 23, 18, 0, 0, 0, 3, 142, 0}},
    {-1756245600LL,
     {1945, 4, 8, 2, 0, 0, 0, 2, 127, 0},
     {1945, 4, 7, 18, 0, 0, 0, 1, 126, 0}},
    {-1756684800LL,
     {1945, 4, 3, 0, 0, 0, 0, 4, 122, 0},
     {1945, 4, 2, 16, 0, 0, 0, 3, 121, 0}},
    {-1758492000LL,
     {1945, 3, 12, 2, 0, 0, 0, 4, 101, 0},
     {1945, 3, 11, 18, 0, 0, 0, 3, 100, 0}},
    {-1759352400LL,
     {1945, 3, 2, 3, 0, 0, 0, 1, 91, 0},
     {1945, 3, 1, 19, 0, 0, 0, 0, 90, 0}},
    {-1759356000LL,
     {1945, 3, 2, 2, 0, 0, 0, 1, 91, 0},
     {1945, 3, 1, 18, 0, 0, 0, 0, 90, 0}},
    {-1767225600LL,
     {1945, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1944, 11, 31, 16, 0, 0, 0, 0, 365, 0}},
    {-1772496000LL,
     {1944, 10, 1, 0, 0, 0, 0, 3, 305, 0},
     {1944, 9, 31, 16, 0, 0, 0, 2, 304, 0}},
    {-1773014400LL,
     {1944, 9, 26, 0, 0, 0, 0, 4, 299, 0},
     {1944, 9, 25, 16, 0, 0, 0, 3, 298, 0}},
    {-1774137600LL,
     {1944, 9, 13, 0, 0, 0, 0, 5, 286, 0},
     {1944, 9, 12, 16, 0, 0, 0, 4, 285, 0}},
    {-1775174340LL,
     {1944, 9, 1, 0, 1, 0, 0, 0, 274, 0},
     {1944, 8, 30, 16, 1, 0, 0, 6, 273, 0}},
    {-1775174400LL,
     {1944, 9, 1, 0, 0, 0, 0, 0, 274, 0},
     {1944, 8, 30, 16, 0, 0, 0, 6, 273, 0}},
    {-1775952000LL,
     {1944, 8, 22, 0, 0, 0, 0, 5, 265, 0},
     {1944, 8, 21, 16, 0, 0, 0, 4, 264, 0}},
    {-1776286800LL,
     {1944, 8, 18, 3, 0, 0, 0, 1, 261, 0},
     {1944, 8, 17, 19, 0, 0, 0, 0, 260, 0}},
    {-1776376800LL,
     {1944, 8, 17, 2, 0, 0, 0, 0, 260, 0},
     {1944, 8, 16, 18, 0, 0, 0, 6, 259, 0}},
    {-1777593600LL,
     {1944, 8, 3, 0, 0, 0, 0, 0, 246, 0},
     {1944, 8, 2, 16, 0, 0, 0, 6, 245, 0}},
    {-1777766400LL,
     {1944, 8, 1, 0, 0, 0, 0, 5, 244, 0},
     {1944, 7, 31, 16, 0, 0, 0, 4, 243, 0}},
    {-1778371200LL,
     {1944, 7, 25, 0, 0, 0, 0, 5, 237, 0},
     {1944, 7, 24, 16, 0, 0, 0, 4, 236, 0}},
    {-1778457600LL,
     {1944, 7, 24, 0, 0, 0, 0, 4, 236, 0},
     {1944, 7, 23, 16, 0, 0, 0, 3, 235, 0}},
    {-1779235200LL,
     {1944, 7, 15, 0, 0, 0, 0, 2, 227, 0},
     {1944, 7, 14, 16, 0, 0, 0, 1, 226, 0}},
    {-1780444800LL,
     {1944, 7, 1, 0, 0, 0, 0, 2, 213, 0},
     {1944, 6, 31, 16, 0, 0, 0, 1, 212, 0}},
    {-1782950400LL,
     {1944, 6, 3, 0, 0, 0, 0, 1, 184, 0},
     {1944, 6, 2, 16, 0, 0, 0, 0, 183, 0}},
    {-1783123200LL,
     {1944, 6, 1, 0, 0, 0, 0, 6, 182, 0},
     {1944, 5, 30, 16, 0, 0, 0, 5, 181, 0}},
    {-1789948800LL,
     {1944, 3, 13, 0, 0, 0, 0, 4, 103, 0},
     {1944, 3, 12, 16, 0, 0, 0, 3, 102, 0}},
    {-1790726400LL,
     {1944, 3, 4, 0, 0, 0, 0, 2, 94, 0},
     {1944, 3, 3, 16, 0, 0, 0, 1, 93, 0}},
    {-1790985540LL,
     {1944, 3, 1, 0, 1, 0, 0, 6, 91, 0},
     {1944, 2, 31, 16, 1, 0, 0, 5, 90, 0}},
    {-1792101600LL,
     {1944, 2, 19, 2, 0, 0, 0, 0, 78, 0},
     {1944, 2, 18, 18, 0, 0, 0, 6, 77, 0}},
    {-1798847940LL,
     {1944, 0, 1, 0, 1, 0, 0, 6, 0, 0},
     {1943, 11, 31, 17, 1, 0, 0, 5, 364, 1}},
    {-1803686400LL,
     {1943, 10, 6, 0, 0, 0, 0, 6, 309, 0},
     {1943, 10, 5, 17, 0, 0, 0, 5, 308, 1}},
    {-1804723200LL,
     {1943, 9, 25, 0, 0, 0, 0, 1, 297, 0},
     {1943, 9, 24, 17, 0, 0, 0, 0, 296, 1}},
    {-1807826400LL,
     {1943, 8, 19, 2, 0, 0, 0, 0, 261, 0},
     {1943, 8, 18, 19, 0, 0, 0, 6, 260, 1}},
    {-1814745600LL,
     {1943, 6, 1, 0, 0, 0, 0, 4, 181, 0},
     {1943, 5, 30, 17, 0, 0, 0, 3, 180, 1}},
    {-181519200LL,
     {1995, 3, 2, 2, 0, 0, 0, 0, 91, 0},
     {1995, 3, 1, 18, 0, 0, 0, 6, 90, 0}},
    {-182124000LL,
     {1995, 2, 26, 2, 0, 0, 0, 0, 84, 0},
     {1995, 2, 25, 18, 0, 0, 0, 6, 83, 0}},
    {-1823551200LL,
     {1943, 2, 21, 2, 0, 0, 0, 0, 79, 0},
     {1943, 2, 20, 19, 0, 0, 0, 6, 78, 1}},
    {-1831939200LL,
     {1942, 11, 14, 0, 0, 0, 0, 1, 347, 0},
     {1942, 11, 13, 17, 0, 0, 0, 0, 346, 1}},
    {-1835557200LL,
     {1942, 10, 2, 3, 0, 0, 0, 1, 305, 0},
     {1942, 10, 1, 20, 0, 0, 0, 0, 304, 1}},
    {-1835560800LL,
     {1942, 10, 2, 2, 0, 0, 0, 1, 305, 0},
     {1942, 10, 1, 19, 0, 0, 0, 0, 304, 1}},
    {183780000LL,
     {2006, 9, 29, 2, 0, 0, 0, 0, 301, 0},
     {2006, 9, 28, 19, 0, 0, 0, 6, 300, 1}},
    {-1839276000LL,
     {1942, 8, 20, 2, 0, 0, 0, 0, 262, 0},
     {1942, 8, 19, 19, 0, 0, 0, 6, 261, 1}},
    {-1840924800LL,
     {1942, 8, 1, 0, 0, 0, 0, 2, 243, 0},
     {1942, 7, 31, 17, 0, 0, 0, 1, 242, 1}},
    {-1843603200LL,
     {1942, 7, 1, 0, 0, 0, 0, 6, 212, 0},
     {1942, 6, 31, 17, 0, 0, 0, 5, 211, 1}},
    {-1850342400LL,
     {1942, 4, 15, 0, 0, 0, 0, 5, 134, 0},
     {1942, 4, 14, 17, 0, 0, 0, 4, 133, 1}},
    {-1850688000LL,
     {1942, 4, 11, 0, 0, 0, 0, 1, 130, 0},
     {1942, 4, 10, 17, 0, 0, 0, 0, 129, 1}},
    {-1851379200LL,
     {1942, 4, 3, 0, 0, 0, 0, 0, 122, 0},
     {1942, 4, 2, 17, 0, 0, 0, 6, 121, 1}},
    {-1851552000LL,
     {1942, 4, 1, 0, 0, 0, 0, 5, 120, 0},
     {1942, 3, 30, 17, 0, 0, 0, 4, 119, 1}},
    {-1852156800LL,
     {1942, 3, 24, 0, 0, 0, 0, 5, 113, 0},
     {1942, 3, 23, 17, 0, 0, 0, 4, 112, 1}},
    {-1854921600LL,
     {1942, 2, 23, 0, 0, 0, 0, 1, 81, 0},
     {1942, 2, 22, 17, 0, 0, 0, 0, 80, 1}},
    {-1855612800LL,
     {1942, 2, 15, 0, 0, 0, 0, 0, 73, 0},
     {1942, 2, 14, 17, 0, 0, 0, 6, 72, 1}},
    {-1857430800LL,
     {1942, 1, 21, 23, 0, 0, 0, 6, 51, 0},
     {1942, 1, 21, 16, 0, 0, 0, 6, 51, 1}},
    {-1857945600LL,
     {1942, 1, 16, 0, 0, 0, 0, 1, 46, 0},
     {1942, 1, 15, 17, 0, 0, 0, 0, 45, 1}},
    {-1858543200LL,
     {1942, 1, 9, 2, 0, 0, 0, 1, 39, 0},
     {1942, 1, 8, 18, 0, 0, 0, 0, 38, 0}},
    {-1858550400LL,
     {1942, 1, 9, 0, 0, 0, 0, 1, 39, 0},
     {1942, 1, 8, 16, 0, 0, 0, 0, 38, 0}},
    {-1859500800LL,
     {1942, 0, 29, 0, 0, 0, 0, 4, 28, 0},
     {1942, 0, 28, 16, 0, 0, 0, 3, 27, 0}},
    {-1861574400LL,
     {1942, 0, 5, 0, 0, 0, 0, 1, 4, 0},
     {1942, 0, 4, 16, 0, 0, 0, 0, 3, 0}},
    {-1861920000LL,
     {1942, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1941, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-1862524800LL,
     {1941, 11, 25, 0, 0, 0, 0, 4, 358, 0},
     {1941, 11, 24, 16, 0, 0, 0, 3, 357, 0}},
    {-1867190400LL,
     {1941, 10, 1, 0, 0, 0, 0, 6, 304, 0},
     {1941, 9, 31, 16, 0, 0, 0, 5, 303, 0}},
    {-1869868800LL,
     {1941, 9, 1, 0, 0, 0, 0, 3, 273, 0},
     {1941, 8, 30, 16, 0, 0, 0, 2, 272, 0}},
    {-1870819200LL,
     {1941, 8, 20, 0, 0, 0, 0, 6, 262, 0},
     {1941, 8, 19, 16, 0, 0, 0, 5, 261, 0}},
    {-1871251200LL,
     {1941, 8, 15, 0, 0, 0, 0, 1, 257, 0},
     {1941, 8, 14, 16, 0, 0, 0, 0, 256, 0}},
    {-1872460800LL,
     {1941, 8, 1, 0, 0, 0, 0, 1, 243, 0},
     {1941, 7, 31, 16, 0, 0, 0, 0, 242, 0}},
    {-1873065600LL,
     {1941, 7, 25, 0, 0, 0, 0, 1, 236, 0},
     {1941, 7, 24, 16, 0, 0, 0, 0, 235, 0}},
    {-1876435200LL,
     {1941, 6, 17, 0, 0, 0, 0, 4, 197, 0},
     {1941, 6, 16, 16, 0, 0, 0, 3, 196, 0}},
    {-1877817600LL,
     {1941, 6, 1, 0, 0, 0, 0, 2, 181, 0},
     {1941, 5, 30, 16, 0, 0, 0, 1, 180, 0}},
    {-1878076800LL,
     {1941, 5, 28, 0, 0, 0, 0, 6, 178, 0},
     {1941, 5, 27, 16, 0, 0, 0, 5, 177, 0}},
    {-1878422400LL,
     {1941, 5, 24, 0, 0, 0, 0, 2, 174, 0},
     {1941, 5, 23, 16, 0, 0, 0, 1, 173, 0}},
    {-1880409600LL,
     {1941, 5, 1, 0, 0, 0, 0, 0, 151, 0},
     {1941, 4, 31, 16, 0, 0, 0, 6, 150, 0}},
    {-1883174400LL,
     {1941, 3, 30, 0, 0, 0, 0, 3, 119, 0},
     {1941, 3, 29, 16, 0, 0, 0, 2, 118, 0}},
    {-1884128400LL,
     {1941, 3, 18, 23, 0, 0, 0, 5, 107, 0},
     {1941, 3, 18, 15, 0, 0, 0, 5, 107, 0}},
    {-1885240800LL,
     {1941, 3, 6, 2, 0, 0, 0, 0, 95, 0},
     {1941, 3, 5, 18, 0, 0, 0, 6, 94, 0}},
    {189302400LL,
     {2007, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {2006, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-1893456000LL,
     {1941, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1940, 11, 31, 16, 0, 0, 0, 2, 365, 0}},
    {-189388800LL,
     {1995, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1994, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-1901577600LL,
     {1940, 8, 29, 0, 0, 0, 0, 0, 272, 0},
     {1940, 8, 28, 16, 0, 0, 0, 6, 271, 0}},
    {-1905465600LL,
     {1940, 7, 15, 0, 0, 0, 0, 4, 227, 0},
     {1940, 7, 14, 16, 0, 0, 0, 3, 226, 0}},
    {-1905814800LL,
     {1940, 7, 10, 23, 0, 0, 0, 6, 222, 0},
     {1940, 7, 10, 15, 0, 0, 0, 6, 222, 0}},
    {-1906243200LL,
     {1940, 7, 6, 0, 0, 0, 0, 2, 218, 0},
     {1940, 7, 5, 16, 0, 0, 0, 1, 217, 0}},
    {-1906329600LL,
     {1940, 7, 5, 0, 0, 0, 0, 1, 217, 0},
     {1940, 7, 4, 16, 0, 0, 0, 0, 216, 0}},
    {-1906502400LL,
     {1940, 7, 3, 0, 0, 0, 0, 6, 215, 0},
     {1940, 7, 2, 16, 0, 0, 0, 5, 214, 0}},
    {-1910037600LL,
     {1940, 5, 23, 2, 0, 0, 0, 0, 174, 0},
     {1940, 5, 22, 18, 0, 0, 0, 6, 173, 0}},
    {-1910649600LL,
     {1940, 5, 16, 0, 0, 0, 0, 0, 167, 0},
     {1940, 5, 15, 16, 0, 0, 0, 6, 166, 0}},
    {-1910739600LL,
     {1940, 5, 14, 23, 0, 0, 0, 5, 165, 0},
     {1940, 5, 14, 15, 0, 0, 0, 5, 165, 0}},
    {-1912975200LL,
     {1940, 4, 20, 2, 0, 0, 0, 1, 140, 0},
     {1940, 4, 19, 18, 0, 0, 0, 0, 139, 0}},
    {-1913328000LL,
     {1940, 4, 16, 0, 0, 0, 0, 4, 136, 0},
     {1940, 4, 15, 16, 0, 0, 0, 3, 135, 0}},
    {-1913490000LL,
     {1940, 4, 14, 3, 0, 0, 0, 2, 134, 0},
     {1940, 4, 13, 19, 0, 0, 0, 1, 133, 0}},
    {-1917208800LL,
     {1940, 3, 1, 2, 0, 0, 0, 1, 91, 0},
     {1940, 2, 31, 18, 0, 0, 0, 0, 90, 0}},
    {-1920319200LL,
     {1940, 1, 25, 2, 0, 0, 0, 0, 55, 0},
     {1940, 1, 24, 18, 0, 0, 0, 6, 54, 0}},
    {-1925078400LL,
     {1940, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1939, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {195271200LL,
     {2007, 2, 11, 2, 0, 0, 0, 0, 69, 0},
     {2007, 2, 10, 18, 0, 0, 0, 6, 68, 0}},
    {195274800LL,
     {2007, 2, 11, 3, 0, 0, 0, 0, 69, 0},
     {2007, 2, 10, 19, 0, 0, 0, 6, 68, 0}},
    {-197856000LL,
     {1994, 8, 25, 0, 0, 0, 0, 0, 267, 0},
     {1994, 8, 24, 17, 0, 0, 0, 6, 266, 1}},
    {-198115200LL,
     {1994, 8, 22, 0, 0, 0, 0, 4, 264, 0},
     {1994, 8, 21, 17, 0, 0, 0, 3, 263, 1}},
    {-1988150400LL,
     {1938, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1937, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {-2004048000LL,
     {1937, 6, 1, 0, 0, 0, 0, 4, 181, 0},
     {1937, 5, 30, 16, 0, 0, 0, 3, 180, 0}},
    {-2023740000LL,
     {1936, 10, 15, 2, 0, 0, 0, 0, 319, 0},
     {1936, 10, 14, 18, 0, 0, 0, 6, 318, 0}},
    {-2040508800LL,
     {1936, 4, 5, 0, 0, 0, 0, 2, 125, 0},
     {1936, 4, 4, 16, 0, 0, 0, 1, 124, 0}},
    {-2046117600LL,
     {1936, 2, 1, 2, 0, 0, 0, 0, 60, 0},
     {1936, 1, 29, 18, 0, 0, 0, 6, 59, 0}},
    {-2051308800LL,
     {1936, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1935, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-2069798400LL,
     {1935, 5, 1, 0, 0, 0, 0, 6, 151, 0},
     {1935, 4, 31, 16, 0, 0, 0, 5, 150, 0}},
    {-2075241600LL,
     {1935, 2, 30, 0, 0, 0, 0, 6, 88, 0},
     {1935, 2, 29, 16, 0, 0, 0, 5, 87, 0}},
    {-2080598400LL,
     {1935, 0, 27, 0, 0, 0, 0, 0, 26, 0},
     {1935, 0, 26, 16, 0, 0, 0, 6, 25, 0}},
    {-2082844800LL,
     {1935, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1934, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-2099433600LL,
     {1934, 5, 23, 0, 0, 0, 0, 6, 173, 0},
     {1934, 5, 22, 16, 0, 0, 0, 5, 172, 0}},
    {-210556800LL,
     {1994, 4, 1, 0, 0, 0, 0, 0, 120, 0},
     {1994, 3, 30, 17, 0, 0, 0, 6, 119, 1}},
    {-2109542400LL,
     {1934, 1, 26, 0, 0, 0, 0, 1, 56, 0},
     {1934, 1, 25, 16, 0, 0, 0, 0, 55, 0}},
    {-2114380800LL,
     {1934, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1933, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-212976000LL,
     {1994, 3, 3, 0, 0, 0, 0, 0, 92, 0},
     {1994, 3, 2, 16, 0, 0, 0, 6, 91, 0}},
    {-2133777600LL,
     {1933, 4, 21, 12, 0, 0, 0, 0, 140, 0},
     {1933, 4, 21, 4, 0, 0, 0, 0, 140, 0}},
    {-2135628000LL,
     {1933, 3, 30, 2, 0, 0, 0, 0, 119, 0},
     {1933, 3, 29, 18, 0, 0, 0, 6, 118, 0}},
    {-2138097600LL,
     {1933, 3, 1, 12, 0, 0, 0, 6, 90, 0},
     {1933, 3, 1, 4, 0, 0, 0, 6, 90, 0}},
    {-2145916800LL,
     {1933, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1932, 11, 31, 16, 0, 0, 0, 6, 365, 0}},
    {-2151187200LL,
     {1932, 10, 1, 0, 0, 0, 0, 2, 305, 0},
     {1932, 9, 31, 16, 0, 0, 0, 1, 304, 0}},
    {-2156457600LL,
     {1932, 8, 1, 0, 0, 0, 0, 4, 244, 0},
     {1932, 7, 31, 16, 0, 0, 0, 3, 243, 0}},
    {215834400LL,
     {2007, 10, 4, 2, 0, 0, 0, 0, 307, 0},
     {2007, 10, 3, 19, 0, 0, 0, 6, 306, 1}},
    {-2169676800LL,
     {1932, 3, 1, 0, 0, 0, 0, 5, 91, 0},
     {1932, 2, 31, 16, 0, 0, 0, 4, 90, 0}},
    {-2170627200LL,
     {1932, 2, 21, 0, 0, 0, 0, 1, 80, 0},
     {1932, 2, 20, 16, 0, 0, 0, 0, 79, 0}},
    {-2172355200LL,
     {1932, 2, 1, 0, 0, 0, 0, 2, 60, 0},
     {1932, 1, 29, 16, 0, 0, 0, 1, 59, 0}},
    {-2177539200LL,
     {1932, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1931, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-2184278400LL,
     {1931, 9, 15, 0, 0, 0, 0, 4, 287, 0},
     {1931, 9, 14, 16, 0, 0, 0, 3, 286, 0}},
    {-2184710400LL,
     {1931, 9, 10, 0, 0, 0, 0, 6, 282, 0},
     {1931, 9, 9, 16, 0, 0, 0, 5, 281, 0}},
    {-2185488000LL,
     {1931, 9, 1, 0, 0, 0, 0, 4, 273, 0},
     {1931, 8, 30, 16, 0, 0, 0, 3, 272, 0}},
    {-2185574400LL,
     {1931, 8, 30, 0, 0, 0, 0, 3, 272, 0},
     {1931, 8, 29, 16, 0, 0, 0, 2, 271, 0}},
    {218862000LL,
     {2007, 11, 9, 3, 0, 0, 0, 0, 342, 0},
     {2007, 11, 8, 19, 0, 0, 0, 6, 341, 0}},
    {-2191449600LL,
     {1931, 6, 24, 0, 0, 0, 0, 5, 204, 0},
     {1931, 6, 23, 16, 0, 0, 0, 4, 203, 0}},
    {-2198624400LL,
     {1931, 4, 1, 23, 0, 0, 0, 5, 120, 0},
     {1931, 4, 1, 15, 0, 0, 0, 5, 120, 0}},
    {-2198707200LL,
     {1931, 4, 1, 0, 0, 0, 0, 5, 120, 0},
     {1931, 3, 30, 16, 0, 0, 0, 4, 119, 0}},
    {-2201299200LL,
     {1931, 3, 1, 0, 0, 0, 0, 3, 90, 0},
     {1931, 2, 31, 16, 0, 0, 0, 2, 89, 0}},
    {22032000LL,
     {2001, 8, 13, 0, 0, 0, 0, 4, 255, 0},
     {2001, 8, 12, 17, 0, 0, 0, 3, 254, 1}},
    {-2209075200LL,
     {1931, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1930, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-220924800LL,
     {1994, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1993, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {-2211753600LL,
     {1930, 11, 1, 0, 0, 0, 0, 1, 334, 0},
     {1930, 10, 30, 16, 0, 0, 0, 0, 333, 0}},
    {-2213136000LL,
     {1930, 10, 15, 0, 0, 0, 0, 6, 318, 0},
     {1930, 10, 14, 16, 0, 0, 0, 5, 317, 0}},
    {-2225836800LL,
     {1930, 5, 21, 0, 0, 0, 0, 6, 171, 0},
     {1930, 5, 20, 16, 0, 0, 0, 5, 170, 0}},
    {222652800LL,
     {2008, 0, 22, 0, 0, 0, 0, 2, 21, 0},
     {2008, 0, 21, 16, 0, 0, 0, 1, 20, 0}},
    {-2240604000LL,
     {1930, 0, 1, 2, 0, 0, 0, 3, 0, 0},
     {1929, 11, 31, 18, 0, 0, 0, 2, 364, 0}},
    {-2240611200LL,
     {1930, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1929, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-2248120800LL,
     {1929, 9, 6, 2, 0, 0, 0, 0, 278, 0},
     {1929, 9, 5, 18, 0, 0, 0, 6, 277, 0}},
    {-2272147200LL,
     {1929, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1928, 11, 31, 16, 0, 0, 0, 1, 365, 0}},
    {228700800LL,
     {2008, 3, 1, 0, 0, 0, 0, 2, 91, 0},
     {2008, 2, 31, 17, 0, 0, 0, 1, 90, 1}},
    {-2288044800LL,
     {1928, 6, 1, 0, 0, 0, 0, 0, 182, 0},
     {1928, 5, 30, 16, 0, 0, 0, 6, 181, 0}},
    {-229132800LL,
     {1993, 8, 28, 0, 0, 0, 0, 2, 270, 0},
     {1993, 8, 27, 17, 0, 0, 0, 1, 269, 1}},
    {-2303769600LL,
     {1928, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1927, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-2314310400LL,
     {1927, 8, 1, 0, 0, 0, 0, 4, 243, 0},
     {1927, 7, 31, 16, 0, 0, 0, 3, 242, 0}},
    {-2321398800LL,
     {1927, 5, 10, 23, 0, 0, 0, 5, 160, 0},
     {1927, 5, 10, 15, 0, 0, 0, 5, 160, 0}},
    {-232502400LL,
     {1993, 7, 20, 0, 0, 0, 0, 5, 231, 0},
     {1993, 7, 19, 17, 0, 0, 0, 4, 230, 1}},
    {23508000LL,
     {2001, 8, 30, 2, 0, 0, 0, 0, 272, 0},
     {2001, 8, 29, 19, 0, 0, 0, 6, 271, 1}},
    {-2355609600LL,
     {1926, 4, 11, 0, 0, 0, 0, 2, 130, 0},
     {1926, 4, 10, 16, 0, 0, 0, 1, 129, 0}},
    {236044800LL,
     {2008, 5, 25, 0, 0, 0, 0, 3, 176, 0},
     {2008, 5, 24, 17, 0, 0, 0, 2, 175, 1}},
    {-2361744000LL,
     {1926, 2, 1, 0, 0, 0, 0, 1, 59, 0},
     {1926, 1, 28, 16, 0, 0, 0, 0, 58, 0}},
    {-2381140800LL,
     {1925, 6, 19, 12, 0, 0, 0, 0, 199, 0},
     {1925, 6, 19, 4, 0, 0, 0, 0, 199, 0}},
    {-2390169600LL,
     {1925, 3, 6, 0, 0, 0, 0, 1, 95, 0},
     {1925, 3, 5, 16, 0, 0, 0, 0, 94, 0}},
    {-240192000LL,
     {1993, 4, 23, 0, 0, 0, 0, 0, 142, 0},
     {1993, 4, 22, 17, 0, 0, 0, 6, 141, 1}},
    {241747200LL,
     {2008, 7, 30, 0, 0, 0, 0, 6, 242, 0},
     {2008, 7, 29, 17, 0, 0, 0, 5, 241, 1}},
    {-2419459200LL,
     {1924, 4, 2, 0, 0, 0, 0, 5, 122, 0},
     {1924, 4, 1, 16, 0, 0, 0, 4, 121, 0}},
    {242006400LL,
     {2008, 8, 2, 0, 0, 0, 0, 2, 245, 0},
     {2008, 8, 1, 17, 0, 0, 0, 1, 244, 1}},
    {-2430000000LL,
     {1924, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1923, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-2430000768LL,
     {1923, 11, 31, 23, 47, 12, 0, 1, 364, 0},
     {1923, 11, 31, 15, 47, 12, 0, 1, 364, 0}},
    {-2450124000LL,
     {1923, 4, 13, 2, 0, 0, 0, 0, 132, 0},
     {1923, 4, 12, 18, 0, 0, 0, 6, 131, 0}},
    {-245026800LL,
     {1993, 2, 28, 1, 0, 0, 0, 0, 86, 0},
     {1993, 2, 27, 17, 0, 0, 0, 6, 85, 0}},
    {246067200LL,
     {2008, 9, 19, 0, 0, 0, 0, 0, 292, 0},
     {2008, 9, 18, 17, 0, 0, 0, 6, 291, 1}},
    {-2465596800LL,
     {1922, 10, 15, 0, 0, 0, 0, 3, 318, 0},
     {1922, 10, 14, 16, 0, 0, 0, 2, 317, 0}},
    {-2466028800LL,
     {1922, 10, 10, 0, 0, 0, 0, 5, 313, 0},
     {1922, 10, 9, 16, 0, 0, 0, 4, 312, 0}},
    {-2469484800LL,
     {1922, 9, 1, 0, 0, 0, 0, 0, 273, 0},
     {1922, 8, 30, 16, 0, 0, 0, 6, 272, 0}},
    {-2480025600LL,
     {1922, 5, 1, 0, 0, 0, 0, 4, 151, 0},
     {1922, 4, 31, 16, 0, 0, 0, 3, 150, 0}},
    {-2487974400LL,
     {1922, 2, 1, 0, 0, 0, 0, 3, 59, 0},
     {1922, 1, 28, 16, 0, 0, 0, 2, 58, 0}},
    {-2493070596LL,
     {1922, 0, 1, 0, 23, 24, 0, 0, 0, 0},
     {1921, 11, 31, 16, 23, 24, 0, 6, 364, 0}},
    {-2493070768LL,
     {1922, 0, 1, 0, 20, 32, 0, 0, 0, 0},
     {1921, 11, 31, 16, 20, 32, 0, 6, 364, 0}},
    {-2493071224LL,
     {1922, 0, 1, 0, 12, 56, 0, 0, 0, 0},
     {1921, 11, 31, 16, 12, 56, 0, 6, 364, 0}},
    {-2493071284LL,
     {1922, 0, 1, 0, 11, 56, 0, 0, 0, 0},
     {1921, 11, 31, 16, 11, 56, 0, 6, 364, 0}},
    {-2493071860LL,
     {1922, 0, 1, 0, 2, 20, 0, 0, 0, 0},
     {1921, 11, 31, 16, 2, 20, 0, 6, 364, 0}},
    {-2493071908LL,
     {1922, 0, 1, 0, 1, 32, 0, 0, 0, 0},
     {1921, 11, 31, 16, 1, 32, 0, 6, 364, 0}},
    {-2493072060LL,
     {1921, 11, 31, 23, 59, 0, 0, 6, 364, 0},
     {1921, 11, 31, 15, 59, 0, 0, 6, 364, 0}},
    {-2493072260LL,
     {1921, 11, 31, 23, 55, 40, 0, 6, 364, 0},
     {1921, 11, 31, 15, 55, 40, 0, 6, 364, 0}},
    {-2493072340LL,
     {1921, 11, 31, 23, 54, 20, 0, 6, 364, 0},
     {1921, 11, 31, 15, 54, 20, 0, 6, 364, 0}},
    {-2493073432LL,
     {1921, 11, 31, 23, 36, 8, 0, 6, 364, 0},
     {1921, 11, 31, 15, 36, 8, 0, 6, 364, 0}},
    {-2493074400LL,
     {1921, 11, 31, 23, 20, 0, 0, 6, 364, 0},
     {1921, 11, 31, 15, 20, 0, 0, 6, 364, 0}},
    {-2493074476LL,
     {1921, 11, 31, 23, 18, 44, 0, 6, 364, 0},
     {1921, 11, 31, 15, 18, 44, 0, 6, 364, 0}},
    {-2495318400LL,
     {1921, 11, 6, 0, 0, 0, 0, 2, 339, 0},
     {1921, 11, 5, 16, 0, 0, 0, 1, 338, 0}},
    {-2497219200LL,
     {1921, 10, 14, 0, 0, 0, 0, 1, 317, 0},
     {1921, 10, 13, 16, 0, 0, 0, 0, 316, 0}},
    {-2502000LL,
     {2000, 11, 3, 1, 0, 0, 0, 0, 337, 0},
     {2000, 11, 2, 17, 0, 0, 0, 6, 336, 0}},
    {-2514240000LL,
     {1921, 4, 1, 0, 0, 0, 0, 0, 120, 0},
     {1921, 3, 30, 16, 0, 0, 0, 6, 119, 0}},
    {-2516832000LL,
     {1921, 3, 1, 0, 0, 0, 0, 5, 90, 0},
     {1921, 2, 31, 16, 0, 0, 0, 4, 89, 0}},
    {-2523398400LL,
     {1921, 0, 15, 0, 0, 0, 0, 6, 14, 0},
     {1921, 0, 14, 16, 0, 0, 0, 5, 13, 0}},
    {252423993599LL,
     {9999, 11, 31, 23, 59, 59, 0, 5, 364, 0},
     {9999, 11, 31, 15, 59, 59, 0, 5, 364, 0}},
    {-252460800LL,
     {1993, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1992, 11, 31, 16, 0, 0, 0, 4, 365, 0}},
    {252460800LL,
     {2009, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {2008, 11, 31, 16, 0, 0, 0, 3, 365, 0}},
    {-2524608000LL,
     {1921, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1920, 11, 31, 16, 0, 0, 0, 5, 365, 0}},
    {-2531865600LL,
     {1920, 9, 9, 0, 0, 0, 0, 6, 282, 0},
     {1920, 9, 8, 16, 0, 0, 0, 5, 281, 0}},
    {-2539555200LL,
     {1920, 6, 12, 0, 0, 0, 0, 1, 193, 0},
     {1920, 6, 11, 16, 0, 0, 0, 0, 192, 0}},
    {-2545776000LL,
     {1920, 4, 1, 0, 0, 0, 0, 6, 121, 0},
     {1920, 3, 30, 16, 0, 0, 0, 5, 120, 0}},
    {-2548368000LL,
     {1920, 3, 1, 0, 0, 0, 0, 4, 91, 0},
     {1920, 2, 31, 16, 0, 0, 0, 3, 90, 0}},
    {-2554156800LL,
     {1920, 0, 25, 0, 0, 0, 0, 0, 24, 0},
     {1920, 0, 24, 16, 0, 0, 0, 6, 23, 0}},
    {-2555798400LL,
     {1920, 0, 6, 0, 0, 0, 0, 2, 5, 0},
     {1920, 0, 5, 16, 0, 0, 0, 1, 4, 0}},
    {-2556057600LL,
     {1920, 0, 3, 0, 0, 0, 0, 6, 2, 0},
     {1920, 0, 2, 16, 0, 0, 0, 5, 1, 0}},
    {-2556230400LL,
     {1920, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1919, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-2557699200LL,
     {1919, 11, 15, 0, 0, 0, 0, 1, 348, 0},
     {1919, 11, 14, 16, 0, 0, 0, 0, 347, 0}},
    {-2557764000LL,
     {1919, 11, 14, 6, 0, 0, 0, 0, 347, 0},
     {1919, 11, 13, 22, 0, 0, 0, 6, 346, 0}},
    {-2560377600LL,
     {1919, 10, 14, 0, 0, 0, 0, 5, 317, 0},
     {1919, 10, 13, 16, 0, 0, 0, 4, 316, 0}},
    {-2563401600LL,
     {1919, 9, 10, 0, 0, 0, 0, 5, 282, 0},
     {1919, 9, 9, 17, 0, 0, 0, 4, 281, 1}},
    {-2566771200LL,
     {1919, 8, 1, 0, 0, 0, 0, 1, 243, 0},
     {1919, 7, 31, 17, 0, 0, 0, 0, 242, 1}},
    {-2570904000LL,
     {1919, 6, 15, 4, 0, 0, 0, 2, 195, 0},
     {1919, 6, 14, 21, 0, 0, 0, 1, 194, 1}},
    {-2572120800LL,
     {1919, 6, 1, 2, 0, 0, 0, 2, 181, 0},
     {1919, 5, 30, 19, 0, 0, 0, 1, 180, 1}},
    {-2572128000LL,
     {1919, 6, 1, 0, 0, 0, 0, 2, 181, 0},
     {1919, 5, 30, 17, 0, 0, 0, 1, 180, 1}},
    {-2575573200LL,
     {1919, 4, 22, 3, 0, 0, 0, 4, 141, 0},
     {1919, 4, 21, 20, 0, 0, 0, 3, 140, 1}},
    {-2579983200LL,
     {1919, 3, 1, 2, 0, 0, 0, 2, 90, 0},
     {1919, 2, 31, 19, 0, 0, 0, 1, 89, 1}},
    {-2579990400LL,
     {1919, 3, 1, 0, 0, 0, 0, 2, 90, 0},
     {1919, 2, 31, 17, 0, 0, 0, 1, 89, 1}},
    {-2582668800LL,
     {1919, 2, 1, 0, 0, 0, 0, 6, 59, 0},
     {1919, 1, 28, 16, 0, 0, 0, 5, 58, 0}},
    {-258328800LL,
     {1992, 9, 25, 2, 0, 0, 0, 0, 298, 0},
     {1992, 9, 24, 19, 0, 0, 0, 6, 297, 1}},
    {-2587766400LL,
     {1919, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1918, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-258940800LL,
     {1992, 9, 18, 0, 0, 0, 0, 0, 291, 0},
     {1992, 9, 17, 17, 0, 0, 0, 6, 290, 1}},
    {-2590963200LL,
     {1918, 10, 25, 0, 0, 0, 0, 1, 328, 0},
     {1918, 10, 24, 16, 0, 0, 0, 0, 327, 0}},
    {-2592133200LL,
     {1918, 10, 11, 11, 0, 0, 0, 1, 314, 0},
     {1918, 10, 11, 3, 0, 0, 0, 1, 314, 0}},
    {-2595114000LL,
     {1918, 9, 7, 23, 0, 0, 0, 1, 279, 0},
     {1918, 9, 7, 16, 0, 0, 0, 1, 279, 1}},
    {-2595369600LL,
     {1918, 9, 5, 0, 0, 0, 0, 6, 277, 0},
     {1918, 9, 4, 17, 0, 0, 0, 5, 276, 1}},
    {-2597000400LL,
     {1918, 8, 16, 3, 0, 0, 0, 1, 258, 0},
     {1918, 8, 15, 20, 0, 0, 0, 0, 257, 1}},
    {-2598307200LL,
     {1918, 8, 1, 0, 0, 0, 0, 0, 243, 0},
     {1918, 7, 31, 17, 0, 0, 0, 6, 242, 1}},
    {-2606169600LL,
     {1918, 5, 2, 0, 0, 0, 0, 0, 152, 0},
     {1918, 5, 1, 17, 0, 0, 0, 6, 151, 1}},
    {-260751600LL,
     {1992, 8, 27, 1, 0, 0, 0, 0, 270, 0},
     {1992, 8, 26, 18, 0, 0, 0, 6, 269, 1}},
    {-260755200LL,
     {1992, 8, 27, 0, 0, 0, 0, 0, 270, 0},
     {1992, 8, 26, 17, 0, 0, 0, 6, 269, 1}},
    {-260758800LL,
     {1992, 8, 26, 23, 0, 0, 0, 6, 269, 0},
     {1992, 8, 26, 16, 0, 0, 0, 6, 269, 1}},
    {-2608419600LL,
     {1918, 4, 6, 23, 0, 0, 0, 1, 125, 0},
     {1918, 4, 6, 16, 0, 0, 0, 1, 125, 1}},
    {-261014400LL,
     {1992, 8, 24, 0, 0, 0, 0, 4, 267, 0},
     {1992, 8, 23, 17, 0, 0, 0, 3, 266, 1}},
    {-2610309600LL,
     {1918, 3, 15, 2, 0, 0, 0, 1, 104, 0},
     {1918, 3, 14, 19, 0, 0, 0, 0, 103, 1}},
    {-2615414400LL,
     {1918, 1, 15, 0, 0, 0, 0, 5, 45, 0},
     {1918, 1, 14, 16, 0, 0, 0, 4, 44, 0}},
    {-2616624000LL,
     {1918, 1, 1, 0, 0, 0, 0, 5, 31, 0},
     {1918, 0, 31, 16, 0, 0, 0, 4, 30, 0}},
    {-2619302400LL,
     {1918, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1917, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-26265600LL,
     {2000, 2, 3, 0, 0, 0, 0, 5, 62, 0},
     {2000, 2, 2, 16, 0, 0, 0, 4, 61, 0}},
    {-2648160000LL,
     {1917, 1, 1, 0, 0, 0, 0, 4, 31, 0},
     {1917, 0, 31, 16, 0, 0, 0, 3, 30, 0}},
    {-2648808000LL,
     {1917, 0, 24, 12, 0, 0, 0, 3, 23, 0},
     {1917, 0, 24, 4, 0, 0, 0, 3, 23, 0}},
    {-2650838400LL,
     {1917, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1916, 11, 31, 16, 0, 0, 0, 0, 365, 0}},
    {-26524800LL,
     {2000, 1, 29, 0, 0, 0, 0, 2, 59, 0},
     {2000, 1, 28, 16, 0, 0, 0, 1, 58, 0}},
    {-2658780000LL,
     {1916, 9, 1, 2, 0, 0, 0, 0, 274, 0},
     {1916, 8, 30, 18, 0, 0, 0, 6, 273, 0}},
    {-2658783600LL,
     {1916, 9, 1, 1, 0, 0, 0, 0, 274, 0},
     {1916, 8, 30, 17, 0, 0, 0, 6, 273, 0}},
    {-2658787200LL,
     {1916, 9, 1, 0, 0, 0, 0, 0, 274, 0},
     {1916, 8, 30, 16, 0, 0, 0, 6, 273, 0}},
    {-2664403140LL,
     {1916, 6, 28, 0, 1, 0, 0, 5, 209, 0},
     {1916, 6, 27, 16, 1, 0, 0, 4, 208, 0}},
    {-2664403200LL,
     {1916, 6, 28, 0, 0, 0, 0, 5, 209, 0},
     {1916, 6, 27, 16, 0, 0, 0, 4, 208, 0}},
    {-2666563200LL,
     {1916, 6, 3, 0, 0, 0, 0, 1, 184, 0},
     {1916, 6, 2, 16, 0, 0, 0, 0, 183, 0}},
    {-2666736000LL,
     {1916, 6, 1, 0, 0, 0, 0, 6, 182, 0},
     {1916, 5, 30, 16, 0, 0, 0, 5, 181, 0}},
    {-2670271200LL,
     {1916, 4, 21, 2, 0, 0, 0, 0, 141, 0},
     {1916, 4, 20, 18, 0, 0, 0, 6, 140, 0}},
    {-2670800400LL,
     {1916, 4, 14, 23, 0, 0, 0, 0, 134, 0},
     {1916, 4, 14, 15, 0, 0, 0, 0, 134, 0}},
    {-2672006400LL,
     {1916, 4, 1, 0, 0, 0, 0, 1, 121, 0},
     {1916, 3, 30, 16, 0, 0, 0, 0, 120, 0}},
    {-2682460800LL,
     {1916, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1915, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {-268358400LL,
     {1992, 6, 1, 0, 0, 0, 0, 3, 182, 0},
     {1992, 5, 30, 17, 0, 0, 0, 2, 181, 1}},
    {-2688249600LL,
     {1915, 9, 26, 0, 0, 0, 0, 2, 298, 0},
     {1915, 9, 25, 16, 0, 0, 0, 1, 297, 0}},
    {-2695334400LL,
     {1915, 7, 5, 0, 0, 0, 0, 4, 216, 0},
     {1915, 7, 4, 16, 0, 0, 0, 3, 215, 0}},
    {-2702412000LL,
     {1915, 4, 15, 2, 0, 0, 0, 6, 134, 0},
     {1915, 4, 14, 18, 0, 0, 0, 5, 133, 0}},
    {-2708899200LL,
     {1915, 2, 1, 0, 0, 0, 0, 1, 59, 0},
     {1915, 1, 28, 16, 0, 0, 0, 0, 58, 0}},
    {-2717366400LL,
     {1914, 10, 23, 0, 0, 0, 0, 1, 326, 0},
     {1914, 10, 22, 16, 0, 0, 0, 0, 325, 0}},
    {-2718662400LL,
     {1914, 10, 8, 0, 0, 0, 0, 0, 311, 0},
     {1914, 10, 7, 16, 0, 0, 0, 6, 310, 0}},
    {-2745532800LL,
     {1914, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1913, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-2751321600LL,
     {1913, 9, 26, 0, 0, 0, 0, 0, 298, 0},
     {1913, 9, 25, 16, 0, 0, 0, 6, 297, 0}},
    {-2764022400LL,
     {1913, 5, 1, 0, 0, 0, 0, 0, 151, 0},
     {1913, 4, 31, 16, 0, 0, 0, 6, 150, 0}},
    {-276472800LL,
     {1992, 2, 29, 2, 0, 0, 0, 0, 88, 0},
     {1992, 2, 28, 18, 0, 0, 0, 6, 87, 0}},
    {-276480000LL,
     {1992, 2, 29, 0, 0, 0, 0, 0, 88, 0},
     {1992, 2, 28, 16, 0, 0, 0, 6, 87, 0}},
    {277524000LL,
     {2009, 9, 18, 2, 0, 0, 0, 0, 290, 0},
     {2009, 9, 17, 19, 0, 0, 0, 6, 289, 1}},
    {-2785017600LL,
     {1912, 9, 1, 0, 0, 0, 0, 2, 274, 0},
     {1912, 8, 30, 16, 0, 0, 0, 1, 273, 0}},
    {-278899200LL,
     {1992, 2, 1, 0, 0, 0, 0, 0, 60, 0},
     {1992, 1, 29, 16, 0, 0, 0, 6, 59, 0}},
    {-2798236800LL,
     {1912, 4, 1, 0, 0, 0, 0, 3, 121, 0},
     {1912, 3, 30, 16, 0, 0, 0, 2, 120, 0}},
    {-2800828800LL,
     {1912, 3, 1, 0, 0, 0, 0, 1, 91, 0},
     {1912, 2, 31, 16, 0, 0, 0, 0, 90, 0}},
    {-2802556800LL,
     {1912, 2, 12, 0, 0, 0, 0, 2, 71, 0},
     {1912, 2, 11, 16, 0, 0, 0, 1, 70, 0}},
    {-2803420800LL,
     {1912, 2, 2, 0, 0, 0, 0, 6, 61, 0},
     {1912, 2, 1, 16, 0, 0, 0, 5, 60, 0}},
    {-2805062400LL,
     {1912, 1, 12, 0, 0, 0, 0, 1, 42, 0},
     {1912, 1, 11, 16, 0, 0, 0, 0, 41, 0}},
    {-2806012800LL,
     {1912, 1, 1, 0, 0, 0, 0, 4, 31, 0},
     {1912, 0, 31, 16, 0, 0, 0, 3, 30, 0}},
    {-2807654400LL,
     {1912, 0, 13, 0, 0, 0, 0, 6, 12, 0},
     {1912, 0, 12, 16, 0, 0, 0, 5, 11, 0}},
    {-2808691200LL,
     {1912, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1911, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-2824588740LL,
     {1911, 6, 1, 0, 1, 0, 0, 6, 181, 0},
     {1911, 5, 30, 16, 1, 0, 0, 5, 180, 0}},
    {-2824588800LL,
     {1911, 6, 1, 0, 0, 0, 0, 6, 181, 0},
     {1911, 5, 30, 16, 0, 0, 0, 5, 180, 0}},
    {-282520800LL,
     {1992, 0, 19, 2, 0, 0, 0, 0, 18, 0},
     {1992, 0, 18, 18, 0, 0, 0, 6, 17, 0}},
    {-2826576000LL,
     {1911, 5, 8, 0, 0, 0, 0, 4, 158, 0},
     {1911, 5, 7, 16, 0, 0, 0, 3, 157, 0}},
    {-2827180800LL,
     {1911, 5, 1, 0, 0, 0, 0, 4, 151, 0},
     {1911, 4, 31, 16, 0, 0, 0, 3, 150, 0}},
    {-2827699200LL,
     {1911, 4, 26, 0, 0, 0, 0, 5, 145, 0},
     {1911, 4, 25, 16, 0, 0, 0, 4, 144, 0}},
    {-2827872000LL,
     {1911, 4, 24, 0, 0, 0, 0, 3, 143, 0},
     {1911, 4, 23, 16, 0, 0, 0, 2, 142, 0}},
    {-2828649600LL,
     {1911, 4, 15, 0, 0, 0, 0, 1, 134, 0},
     {1911, 4, 14, 16, 0, 0, 0, 0, 133, 0}},
    {-2829859200LL,
     {1911, 4, 1, 0, 0, 0, 0, 1, 120, 0},
     {1911, 3, 30, 16, 0, 0, 0, 0, 119, 0}},
    {-2834265540LL,
     {1911, 2, 11, 0, 1, 0, 0, 6, 69, 0},
     {1911, 2, 10, 16, 1, 0, 0, 5, 68, 0}},
    {-2834265600LL,
     {1911, 2, 11, 0, 0, 0, 0, 6, 69, 0},
     {1911, 2, 10, 16, 0, 0, 0, 5, 68, 0}},
    {283996800LL,
     {2010, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {2009, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-2840227200LL,
     {1911, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1910, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-284068800LL,
     {1992, 0, 1, 4, 0, 0, 0, 3, 0, 0},
     {1991, 11, 31, 20, 0, 0, 0, 2, 364, 0}},
    {-284083200LL,
     {1992, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1991, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-2848176000LL,
     {1910, 9, 1, 0, 0, 0, 0, 6, 273, 0},
     {1910, 8, 30, 16, 0, 0, 0, 5, 272, 0}},
    {-285465600LL,
     {1991, 11, 16, 0, 0, 0, 0, 1, 349, 0},
     {1991, 11, 15, 16, 0, 0, 0, 0, 348, 0}},
    {-2871763200LL,
     {1910, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1909, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {289447200LL,
     {2010, 2, 5, 2, 0, 0, 0, 5, 63, 0},
     {2010, 2, 4, 18, 0, 0, 0, 4, 62, 0}},
    {-289778400LL,
     {1991, 9, 27, 2, 0, 0, 0, 0, 299, 0},
     {1991, 9, 26, 19, 0, 0, 0, 6, 298, 1}},
    {-289785600LL,
     {1991, 9, 27, 0, 0, 0, 0, 0, 299, 0},
     {1991, 9, 26, 17, 0, 0, 0, 6, 298, 1}},
    {289944000LL,
     {2010, 2, 10, 20, 0, 0, 0, 3, 68, 0},
     {2010, 2, 10, 12, 0, 0, 0, 3, 68, 0}},
    {-290379600LL,
     {1991, 9, 20, 3, 0, 0, 0, 0, 292, 0},
     {1991, 9, 19, 20, 0, 0, 0, 6, 291, 1}},
    {-290390400LL,
     {1991, 9, 20, 0, 0, 0, 0, 0, 292, 0},
     {1991, 9, 19, 17, 0, 0, 0, 6, 291, 1}},
    {-290822400LL,
     {1991, 9, 15, 0, 0, 0, 0, 2, 287, 0},
     {1991, 9, 14, 17, 0, 0, 0, 1, 286, 1}},
    {291340860LL,
     {2010, 2, 27, 0, 1, 0, 0, 6, 85, 0},
     {2010, 2, 26, 17, 1, 0, 0, 5, 84, 1}},
    {291434400LL,
     {2010, 2, 28, 2, 0, 0, 0, 0, 86, 0},
     {2010, 2, 27, 19, 0, 0, 0, 6, 85, 1}},
    {-291600000LL,
     {1991, 9, 6, 0, 0, 0, 0, 0, 278, 0},
     {1991, 9, 5, 17, 0, 0, 0, 6, 277, 1}},
    {-2916864000LL,
     {1908, 6, 28, 0, 0, 0, 0, 2, 209, 0},
     {1908, 6, 27, 16, 0, 0, 0, 1, 208, 0}},
    {292039200LL,
     {2010, 3, 4, 2, 0, 0, 0, 0, 93, 0},
     {2010, 3, 3, 19, 0, 0, 0, 6, 92, 1}},
    {292042800LL,
     {2010, 3, 4, 3, 0, 0, 0, 0, 93, 0},
     {2010, 3, 3, 20, 0, 0, 0, 6, 92, 1}},
    {-292197600LL,
     {1991, 8, 29, 2, 0, 0, 0, 0, 271, 0},
     {1991, 8, 28, 19, 0, 0, 0, 6, 270, 1}},
    {-2924467200LL,
     {1908, 4, 1, 0, 0, 0, 0, 5, 121, 0},
     {1908, 3, 30, 16, 0, 0, 0, 4, 120, 0}},
    {-2925244800LL,
     {1908, 3, 22, 0, 0, 0, 0, 3, 112, 0},
     {1908, 3, 21, 16, 0, 0, 0, 2, 111, 0}},
    {-292723200LL,
     {1991, 8, 23, 0, 0, 0, 0, 1, 265, 0},
     {1991, 8, 22, 17, 0, 0, 0, 0, 264, 1}},
    {-2934057600LL,
     {1908, 0, 11, 0, 0, 0, 0, 6, 10, 0},
     {1908, 0, 10, 16, 0, 0, 0, 5, 9, 0}},
    {-2934921600LL,
     {1908, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1907, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-293925600LL,
     {1991, 8, 9, 2, 0, 0, 0, 1, 251, 0},
     {1991, 8, 8, 19, 0, 0, 0, 0, 250, 1}},
    {-294624000LL,
     {1991, 8, 1, 0, 0, 0, 0, 0, 243, 0},
     {1991, 7, 31, 17, 0, 0, 0, 6, 242, 1}},
    {-294703200LL,
     {1991, 7, 31, 2, 0, 0, 0, 6, 242, 0},
     {1991, 7, 30, 19, 0, 0, 0, 5, 241, 1}},
    {-294796800LL,
     {1991, 7, 30, 0, 0, 0, 0, 5, 241, 0},
     {1991, 7, 29, 17, 0, 0, 0, 4, 240, 1}},
    {-2966457600LL,
     {1907, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1906, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-2976998400LL,
     {1906, 8, 1, 0, 0, 0, 0, 6, 243, 0},
     {1906, 7, 31, 16, 0, 0, 0, 5, 242, 0}},
    {-2984256000LL,
     {1906, 5, 9, 0, 0, 0, 0, 6, 159, 0},
     {1906, 5, 8, 16, 0, 0, 0, 5, 158, 0}},
    {-2984947200LL,
     {1906, 5, 1, 0, 0, 0, 0, 5, 151, 0},
     {1906, 4, 31, 16, 0, 0, 0, 4, 150, 0}},
    {-2997993600LL,
     {1906, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1905, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-3008534400LL,
     {1905, 8, 1, 0, 0, 0, 0, 5, 243, 0},
     {1905, 7, 31, 16, 0, 0, 0, 4, 242, 0}},
    {-3009312000LL,
     {1905, 7, 23, 0, 0, 0, 0, 3, 234, 0},
     {1905, 7, 22, 16, 0, 0, 0, 2, 233, 0}},
    {-3011212800LL,
     {1905, 7, 1, 0, 0, 0, 0, 2, 212, 0},
     {1905, 6, 31, 16, 0, 0, 0, 1, 211, 0}},
    {-3016483200LL,
     {1905, 5, 1, 0, 0, 0, 0, 4, 151, 0},
     {1905, 4, 31, 16, 0, 0, 0, 3, 150, 0}},
    {-302572800LL,
     {1991, 5, 1, 0, 0, 0, 0, 6, 151, 0},
     {1991, 4, 31, 17, 0, 0, 0, 5, 150, 1}},
    {-3029529600LL,
     {1905, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1904, 11, 31, 16, 0, 0, 0, 6, 365, 0}},
    {-3032208000LL,
     {1904, 11, 1, 0, 0, 0, 0, 4, 335, 0},
     {1904, 10, 30, 16, 0, 0, 0, 3, 334, 0}},
    {-3034972800LL,
     {1904, 9, 30, 0, 0, 0, 0, 0, 303, 0},
     {1904, 9, 29, 16, 0, 0, 0, 6, 302, 0}},
    {-30369600LL,
     {2000, 0, 15, 12, 0, 0, 0, 6, 14, 0},
     {2000, 0, 15, 4, 0, 0, 0, 6, 14, 0}},
    {-304732800LL,
     {1991, 4, 7, 0, 0, 0, 0, 2, 126, 0},
     {1991, 4, 6, 17, 0, 0, 0, 1, 125, 1}},
    {-3048019200LL,
     {1904, 5, 1, 0, 0, 0, 0, 3, 152, 0},
     {1904, 4, 31, 16, 0, 0, 0, 2, 151, 0}},
    {305344800LL,
     {2010, 8, 5, 2, 0, 0, 0, 0, 247, 0},
     {2010, 8, 4, 19, 0, 0, 0, 6, 246, 1}},
    {-307152000LL,
     {1991, 3, 9, 0, 0, 0, 0, 2, 98, 0},
     {1991, 3, 8, 17, 0, 0, 0, 1, 97, 1}},
    {307152000LL,
     {2010, 8, 26, 0, 0, 0, 0, 0, 268, 0},
     {2010, 8, 25, 17, 0, 0, 0, 6, 267, 1}},
    {-307918800LL,
     {1991, 2, 31, 3, 0, 0, 0, 0, 89, 0},
     {1991, 2, 30, 19, 0, 0, 0, 6, 88, 0}},
    {-307922400LL,
     {1991, 2, 31, 2, 0, 0, 0, 0, 89, 0},
     {1991, 2, 30, 18, 0, 0, 0, 6, 88, 0}},
    {-3087590400LL,
     {1903, 2, 1, 0, 0, 0, 0, 0, 59, 0},
     {1903, 1, 28, 16, 0, 0, 0, 6, 58, 0}},
    {-309139200LL,
     {1991, 2, 17, 0, 0, 0, 0, 0, 75, 0},
     {1991, 2, 16, 16, 0, 0, 0, 6, 74, 0}},
    {-310348800LL,
     {1991, 2, 3, 0, 0, 0, 0, 0, 61, 0},
     {1991, 2, 2, 16, 0, 0, 0, 6, 60, 0}},
    {-310521600LL,
     {1991, 2, 1, 0, 0, 0, 0, 5, 59, 0},
     {1991, 1, 28, 16, 0, 0, 0, 4, 58, 0}},
    {310788000LL,
     {2010, 10, 7, 2, 0, 0, 0, 0, 310, 0},
     {2010, 10, 6, 19, 0, 0, 0, 6, 309, 1}},
    {-3109968000LL,
     {1902, 5, 15, 0, 0, 0, 0, 0, 165, 0},
     {1902, 5, 14, 16, 0, 0, 0, 6, 164, 0}},
    {-3155760000LL,
     {1901, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1900, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-315619200LL,
     {1991, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1990, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-31622400LL,
     {2000, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1999, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {-3163708800LL,
     {1900, 9, 1, 0, 0, 0, 0, 1, 273, 0},
     {1900, 8, 30, 16, 0, 0, 0, 0, 272, 0}},
    {-3167294400LL,
     {1900, 7, 20, 12, 0, 0, 0, 1, 231, 0},
     {1900, 7, 20, 4, 0, 0, 0, 1, 231, 0}},
    {-3167337600LL,
     {1900, 7, 20, 0, 0, 0, 0, 1, 231, 0},
     {1900, 7, 19, 16, 0, 0, 0, 0, 230, 0}},
    {-3187296000LL,
     {1900, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1899, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-3192566400LL,
     {1899, 10, 1, 0, 0, 0, 0, 3, 304, 0},
     {1899, 9, 31, 16, 0, 0, 0, 2, 303, 0}},
    {-3207600000LL,
     {1899, 4, 11, 0, 0, 0, 0, 4, 130, 0},
     {1899, 4, 10, 16, 0, 0, 0, 3, 129, 0}},
    {-3208464000LL,
     {1899, 4, 1, 0, 0, 0, 0, 1, 120, 0},
     {1899, 3, 30, 16, 0, 0, 0, 0, 119, 0}},
    {-3211358400LL,
     {1899, 2, 28, 12, 0, 0, 0, 2, 86, 0},
     {1899, 2, 28, 4, 0, 0, 0, 2, 86, 0}},
    {-321235200LL,
     {1990, 9, 28, 0, 0, 0, 0, 0, 300, 0},
     {1990, 9, 27, 17, 0, 0, 0, 6, 299, 1}},
    {-322358400LL,
     {1990, 9, 15, 0, 0, 0, 0, 1, 287, 0},
     {1990, 9, 14, 17, 0, 0, 0, 0, 286, 1}},
    {322880400LL,
     {2011, 2, 27, 1, 0, 0, 0, 0, 85, 0},
     {2011, 2, 26, 18, 0, 0, 0, 6, 84, 1}},
    {322884000LL,
     {2011, 2, 27, 2, 0, 0, 0, 0, 85, 0},
     {2011, 2, 26, 19, 0, 0, 0, 6, 84, 1}},
    {322966800LL,
     {2011, 2, 28, 1, 0, 0, 0, 1, 86, 0},
     {2011, 2, 27, 18, 0, 0, 0, 0, 85, 1}},
    {323409600LL,
     {2011, 3, 2, 4, 0, 0, 0, 6, 91, 0},
     {2011, 3, 1, 21, 0, 0, 0, 5, 90, 1}},
    {-3234988800LL,
     {1898, 5, 28, 0, 0, 0, 0, 2, 178, 0},
     {1898, 5, 27, 16, 0, 0, 0, 1, 177, 0}},
    {-324777600LL,
     {1990, 8, 17, 0, 0, 0, 0, 1, 259, 0},
     {1990, 8, 16, 17, 0, 0, 0, 0, 258, 1}},
    {-3254947200LL,
     {1897, 10, 9, 0, 0, 0, 0, 2, 312, 0},
     {1897, 10, 8, 16, 0, 0, 0, 1, 311, 0}},
    {-32659200LL,
     {1999, 11, 20, 0, 0, 0, 0, 1, 353, 0},
     {1999, 11, 19, 16, 0, 0, 0, 0, 352, 0}},
    {-3293222400LL,
     {1896, 7, 23, 0, 0, 0, 0, 0, 235, 0},
     {1896, 7, 22, 16, 0, 0, 0, 6, 234, 0}},
    {-3312446400LL,
     {1896, 0, 13, 12, 0, 0, 0, 1, 12, 0},
     {1896, 0, 13, 4, 0, 0, 0, 1, 12, 0}},
    {-3313526400LL,
     {1896, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1895, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-331509600LL,
     {1990, 6, 1, 2, 0, 0, 0, 0, 181, 0},
     {1990, 5, 30, 19, 0, 0, 0, 6, 180, 1}},
    {-3316204800LL,
     {1895, 11, 1, 0, 0, 0, 0, 0, 334, 0},
     {1895, 10, 30, 16, 0, 0, 0, 6, 333, 0}},
    {-3322944000LL,
     {1895, 8, 14, 0, 0, 0, 0, 6, 256, 0},
     {1895, 8, 13, 16, 0, 0, 0, 5, 255, 0}},
    {-3324067200LL,
     {1895, 8, 1, 0, 0, 0, 0, 0, 243, 0},
     {1895, 7, 31, 16, 0, 0, 0, 6, 242, 0}},
    {333849600LL,
     {2011, 7, 1, 0, 0, 0, 0, 1, 212, 0},
     {2011, 6, 31, 17, 0, 0, 0, 0, 211, 1}},
    {-3342384000LL,
     {1895, 1, 1, 0, 0, 0, 0, 5, 31, 0},
     {1895, 0, 31, 16, 0, 0, 0, 4, 30, 0}},
    {-3345062400LL,
     {1895, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1894, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-3347827200LL,
     {1894, 10, 30, 0, 0, 0, 0, 5, 333, 0},
     {1894, 10, 29, 16, 0, 0, 0, 4, 332, 0}},
    {-3350419200LL,
     {1894, 9, 31, 0, 0, 0, 0, 3, 303, 0},
     {1894, 9, 30, 16, 0, 0, 0, 2, 302, 0}},
    {-336355200LL,
     {1990, 4, 6, 0, 0, 0, 0, 0, 125, 0},
     {1990, 4, 5, 17, 0, 0, 0, 6, 124, 1}},
    {-3363552000LL,
     {1894, 5, 1, 0, 0, 0, 0, 5, 151, 0},
     {1894, 4, 31, 16, 0, 0, 0, 4, 150, 0}},
    {-336528000LL,
     {1990, 4, 4, 0, 0, 0, 0, 5, 123, 0},
     {1990, 4, 3, 17, 0, 0, 0, 4, 122, 1}},
    {337564800LL,
     {2011, 8, 13, 0, 0, 0, 0, 2, 255, 0},
     {2011, 8, 12, 17, 0, 0, 0, 1, 254, 1}},
    {-3376598400LL,
     {1894, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1893, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-3381782400LL,
     {1893, 10, 2, 0, 0, 0, 0, 4, 305, 0},
     {1893, 10, 1, 16, 0, 0, 0, 3, 304, 0}},
    {-3381868800LL,
     {1893, 10, 1, 0, 0, 0, 0, 3, 304, 0},
     {1893, 9, 31, 16, 0, 0, 0, 2, 303, 0}},
    {338526000LL,
     {2011, 8, 24, 3, 0, 0, 0, 6, 266, 0},
     {2011, 8, 23, 20, 0, 0, 0, 5, 265, 1}},
    {-3400358400LL,
     {1893, 3, 1, 0, 0, 0, 0, 6, 90, 0},
     {1893, 2, 31, 16, 0, 0, 0, 5, 89, 0}},
    {-340329600LL,
     {1990, 2, 21, 0, 0, 0, 0, 3, 79, 0},
     {1990, 2, 20, 16, 0, 0, 0, 2, 78, 0}},
    {340416000LL,
     {2011, 9, 16, 0, 0, 0, 0, 0, 288, 0},
     {2011, 9, 15, 17, 0, 0, 0, 6, 287, 1}},
    {-3408134400LL,
     {1893, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1892, 11, 31, 16, 0, 0, 0, 6, 365, 0}},
    {-340934400LL,
     {1990, 2, 14, 0, 0, 0, 0, 3, 72, 0},
     {1990, 2, 13, 16, 0, 0, 0, 2, 71, 0}},
    {341460000LL,
     {2011, 9, 28, 2, 0, 0, 0, 5, 300, 0},
     {2011, 9, 27, 19, 0, 0, 0, 4, 299, 1}},
    {-341798400LL,
     {1990, 2, 4, 0, 0, 0, 0, 0, 62, 0},
     {1990, 2, 3, 16, 0, 0, 0, 6, 61, 0}},
    {341798400LL,
     {2011, 10, 1, 0, 0, 0, 0, 2, 304, 0},
     {2011, 9, 31, 17, 0, 0, 0, 1, 303, 1}},
    {-3429259200LL,
     {1892, 4, 1, 12, 0, 0, 0, 0, 121, 0},
     {1892, 4, 1, 4, 0, 0, 0, 0, 121, 0}},
    {-3436473600LL,
     {1892, 1, 8, 0, 0, 0, 0, 1, 38, 0},
     {1892, 1, 7, 16, 0, 0, 0, 0, 37, 0}},
    {-3439756800LL,
     {1892, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1891, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-3447705600LL,
     {1891, 9, 1, 0, 0, 0, 0, 4, 273, 0},
     {1891, 8, 30, 16, 0, 0, 0, 3, 272, 0}},
    {-3464985540LL,
     {1891, 2, 15, 0, 1, 0, 0, 0, 73, 0},
     {1891, 2, 14, 16, 1, 0, 0, 6, 72, 0}},
    {-3464985600LL,
     {1891, 2, 15, 0, 0, 0, 0, 0, 73, 0},
     {1891, 2, 14, 16, 0, 0, 0, 6, 72, 0}},
    {346896000LL,
     {2011, 11, 30, 0, 0, 0, 0, 5, 363, 0},
     {2011, 11, 29, 16, 0, 0, 0, 4, 362, 0}},
    {-347155200LL,
     {1990, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1989, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {347155200LL,
     {2012, 0, 2, 0, 0, 0, 0, 1, 1, 0},
     {2012, 0, 1, 16, 0, 0, 0, 0, 0, 0}},
    {-3479241600LL,
     {1890, 9, 1, 0, 0, 0, 0, 3, 273, 0},
     {1890, 8, 30, 16, 0, 0, 0, 2, 272, 0}},
    {-3502828800LL,
     {1890, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1889, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {351622800LL,
     {2012, 1, 22, 17, 0, 0, 0, 3, 52, 0},
     {2012, 1, 22, 9, 0, 0, 0, 3, 52, 0}},
    {351633600LL,
     {2012, 1, 22, 20, 0, 0, 0, 3, 52, 0},
     {2012, 1, 22, 12, 0, 0, 0, 3, 52, 0}},
    {354420000LL,
     {2012, 2, 26, 2, 0, 0, 0, 1, 85, 0},
     {2012, 2, 25, 19, 0, 0, 0, 0, 84, 1}},
    {355550400LL,
     {2012, 3, 8, 4, 0, 0, 0, 0, 98, 0},
     {2012, 3, 7, 21, 0, 0, 0, 6, 97, 1}},
    {-355701600LL,
     {1989, 8, 24, 2, 0, 0, 0, 0, 266, 0},
     {1989, 8, 23, 19, 0, 0, 0, 6, 265, 1}},
    {-3566019600LL,
     {1887, 11, 31, 15, 0, 0, 0, 6, 364, 0},
     {1887, 11, 31, 7, 0, 0, 0, 6, 364, 0}},
    {-3580588800LL,
     {1887, 6, 16, 0, 0, 0, 0, 6, 196, 0},
     {1887, 6, 15, 16, 0, 0, 0, 5, 195, 0}},
    {35856000LL,
     {2002, 1, 20, 0, 0, 0, 0, 3, 50, 0},
     {2002, 1, 19, 16, 0, 0, 0, 2, 49, 0}},
    {35942400LL,
     {2002, 1, 21, 0, 0, 0, 0, 4, 51, 0},
     {2002, 1, 20, 16, 0, 0, 0, 3, 50, 0}},
    {-3638088000LL,
     {1885, 8, 18, 12, 0, 0, 0, 5, 260, 0},
     {1885, 8, 18, 4, 0, 0, 0, 5, 260, 0}},
    {-3660595200LL,
     {1885, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1884, 11, 31, 16, 0, 0, 0, 3, 365, 0}},
    {-3685996800LL,
     {1884, 2, 13, 0, 0, 0, 0, 4, 72, 0},
     {1884, 2, 12, 16, 0, 0, 0, 3, 71, 0}},
    {-36892800LL,
     {1999, 10, 1, 0, 0, 0, 0, 1, 304, 0},
     {1999, 9, 31, 16, 0, 0, 0, 0, 303, 0}},
    {-3692217600LL,
     {1884, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1883, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-3694204800LL,
     {1883, 11, 9, 0, 0, 0, 0, 0, 342, 0},
     {1883, 11, 8, 16, 0, 0, 0, 6, 341, 0}},
    {-3695974764LL,
     {1883, 10, 18, 12, 20, 36, 0, 0, 321, 0},
     {1883, 10, 18, 4, 20, 36, 0, 0, 321, 0}},
    {-3695974816LL,
     {1883, 10, 18, 12, 19, 44, 0, 0, 321, 0},
     {1883, 10, 18, 4, 19, 44, 0, 0, 321, 0}},
    {-3695974982LL,
     {1883, 10, 18, 12, 16, 58, 0, 0, 321, 0},
     {1883, 10, 18, 4, 16, 58, 0, 0, 321, 0}},
    {-3695975078LL,
     {1883, 10, 18, 12, 15, 22, 0, 0, 321, 0},
     {1883, 10, 18, 4, 15, 22, 0, 0, 321, 0}},
    {-3695975089LL,
     {1883, 10, 18, 12, 15, 11, 0, 0, 321, 0},
     {1883, 10, 18, 4, 15, 11, 0, 0, 321, 0}},
    {-3695975112LL,
     {1883, 10, 18, 12, 14, 48, 0, 0, 321, 0},
     {1883, 10, 18, 4, 14, 48, 0, 0, 321, 0}},
    {-3695975123LL,
     {1883, 10, 18, 12, 14, 37, 0, 0, 321, 0},
     {1883, 10, 18, 4, 14, 37, 0, 0, 321, 0}},
    {-3695975139LL,
     {1883, 10, 18, 12, 14, 21, 0, 0, 321, 0},
     {1883, 10, 18, 4, 14, 21, 0, 0, 321, 0}},
    {-3695975185LL,
     {1883, 10, 18, 12, 13, 35, 0, 0, 321, 0},
     {1883, 10, 18, 4, 13, 35, 0, 0, 321, 0}},
    {-3695975190LL,
     {1883, 10, 18, 12, 13, 30, 0, 0, 321, 0},
     {1883, 10, 18, 4, 13, 30, 0, 0, 321, 0}},
    {-3695975223LL,
     {1883, 10, 18, 12, 12, 57, 0, 0, 321, 0},
     {1883, 10, 18, 4, 12, 57, 0, 0, 321, 0}},
    {-3695975227LL,
     {1883, 10, 18, 12, 12, 53, 0, 0, 321, 0},
     {1883, 10, 18, 4, 12, 53, 0, 0, 321, 0}},
    {-3695975347LL,
     {1883, 10, 18, 12, 10, 53, 0, 0, 321, 0},
     {1883, 10, 18, 4, 10, 53, 0, 0, 321, 0}},
    {-3695975407LL,
     {1883, 10, 18, 12, 9, 53, 0, 0, 321, 0},
     {1883, 10, 18, 4, 9, 53, 0, 0, 321, 0}},
    {-3695975436LL,
     {1883, 10, 18, 12, 9, 24, 0, 0, 321, 0},
     {1883, 10, 18, 4, 9, 24, 0, 0, 321, 0}},
    {-3695975578LL,
     {1883, 10, 18, 12, 7, 2, 0, 0, 321, 0},
     {1883, 10, 18, 4, 7, 2, 0, 0, 321, 0}},
    {-3695975762LL,
     {1883, 10, 18, 12, 3, 58, 0, 0, 321, 0},
     {1883, 10, 18, 4, 3, 58, 0, 0, 321, 0}},
    {-3695975996LL,
     {1883, 10, 18, 12, 0, 4, 0, 0, 321, 0},
     {1883, 10, 18, 4, 0, 4, 0, 0, 321, 0}},
    {-3695977698LL,
     {1883, 10, 18, 11, 31, 42, 0, 0, 321, 0},
     {1883, 10, 18, 3, 31, 42, 0, 0, 321, 0}},
    {-36972000LL,
     {1999, 9, 31, 2, 0, 0, 0, 0, 303, 0},
     {1999, 9, 30, 19, 0, 0, 0, 6, 302, 1}},
    {-36975600LL,
     {1999, 9, 31, 1, 0, 0, 0, 0, 303, 0},
     {1999, 9, 30, 18, 0, 0, 0, 6, 302, 1}},
    {-371426400LL,
     {1989, 2, 26, 2, 0, 0, 0, 0, 84, 0},
     {1989, 2, 25, 18, 0, 0, 0, 6, 83, 0}},
    {372556800LL,
     {2012, 9, 22, 0, 0, 0, 0, 1, 295, 0},
     {2012, 9, 21, 17, 0, 0, 0, 0, 294, 1}},
    {374292000LL,
     {2012, 10, 11, 2, 0, 0, 0, 0, 315, 0},
     {2012, 10, 10, 18, 0, 0, 0, 6, 314, 0}},
    {-3755289600LL,
     {1882, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1881, 11, 31, 16, 7, 2, 0, 6, 364, 0}},
    {-3775507200LL,
     {1881, 4, 12, 0, 0, 0, 0, 4, 131, 0},
     {1881, 4, 11, 16, 7, 2, 0, 3, 130, 0}},
    {-378691200LL,
     {1989, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1988, 11, 31, 16, 0, 0, 0, 6, 365, 0}},
    {-3799958400LL,
     {1880, 7, 2, 0, 0, 0, 0, 1, 214, 0},
     {1880, 7, 1, 16, 7, 2, 0, 0, 213, 0}},
    {-3818448000LL,
     {1880, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1879, 11, 31, 16, 7, 2, 0, 3, 364, 0}},
    {-3834000000LL,
     {1879, 6, 5, 0, 0, 0, 0, 6, 185, 0},
     {1879, 6, 4, 16, 7, 2, 0, 5, 184, 0}},
    {-3849984000LL,
     {1879, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1878, 11, 31, 16, 7, 2, 0, 2, 364, 0}},
    {-3868560000LL,
     {1878, 4, 31, 0, 0, 0, 0, 5, 150, 0},
     {1878, 4, 30, 16, 7, 2, 0, 4, 149, 0}},
    {-388281600LL,
     {1988, 8, 12, 0, 0, 0, 0, 1, 255, 0},
     {1988, 8, 11, 17, 0, 0, 0, 0, 254, 1}},
    {-39398400LL,
     {1999, 9, 3, 0, 0, 0, 0, 0, 275, 0},
     {1999, 9, 2, 17, 0, 0, 0, 6, 274, 1}},
    {-39657600LL,
     {1999, 8, 30, 0, 0, 0, 0, 4, 272, 0},
     {1999, 8, 29, 17, 0, 0, 0, 3, 271, 1}},
    {-410313600LL,
     {1988, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1987, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-4133980800LL,
     {1870, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1869, 11, 31, 16, 7, 2, 0, 5, 364, 0}},
    {-4170700800LL,
     {1868, 10, 2, 0, 0, 0, 0, 1, 306, 0},
     {1868, 10, 1, 16, 7, 2, 0, 0, 305, 0}},
    {-418262400LL,
     {1987, 9, 1, 0, 0, 0, 0, 4, 273, 0},
     {1987, 8, 30, 17, 0, 0, 0, 3, 272, 1}},
    {-4203619200LL,
     {1867, 9, 18, 0, 0, 0, 0, 5, 290, 0},
     {1867, 9, 17, 16, 7, 2, 0, 4, 289, 0}},
    {-4209580800LL,
     {1867, 7, 10, 0, 0, 0, 0, 6, 221, 0},
     {1867, 7, 9, 16, 7, 2, 0, 5, 220, 0}},
    {-4237401600LL,
     {1866, 8, 22, 0, 0, 0, 0, 6, 264, 0},
     {1866, 8, 21, 16, 7, 2, 0, 5, 263, 0}},
    {-441849600LL,
     {1987, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1986, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-473385600LL,
     {1986, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1985, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-4765132800LL,
     {1850, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1849, 11, 31, 16, 7, 2, 0, 1, 364, 0}},
    {-4806259200LL,
     {1848, 8, 12, 0, 0, 0, 0, 2, 255, 0},
     {1848, 8, 11, 16, 7, 2, 0, 1, 254, 0}},
    {-482716800LL,
     {1985, 8, 15, 0, 0, 0, 0, 0, 257, 0},
     {1985, 8, 14, 17, 0, 0, 0, 6, 256, 1}},
    {-4830969600LL,
     {1847, 11, 1, 0, 0, 0, 0, 3, 334, 0},
     {1847, 10, 30, 16, 7, 2, 0, 2, 333, 0}},
    {-4922985600LL,
     {1844, 11, 31, 0, 0, 0, 0, 2, 365, 0},
     {1844, 11, 30, 16, 7, 2, 0, 1, 364, 0}},
    {-4924800LL,
     {2000, 10, 5, 0, 0, 0, 0, 0, 309, 0},
     {2000, 10, 4, 16, 0, 0, 0, 6, 308, 0}},
    {-495504000LL,
     {1985, 3, 20, 0, 0, 0, 0, 6, 109, 0},
     {1985, 3, 19, 16, 0, 0, 0, 5, 108, 0}},
    {-497224800LL,
     {1985, 2, 31, 2, 0, 0, 0, 0, 89, 0},
     {1985, 2, 30, 18, 0, 0, 0, 6, 88, 0}},
    {-512870400LL,
     {1984, 9, 1, 0, 0, 0, 0, 1, 274, 0},
     {1984, 8, 30, 17, 0, 0, 0, 0, 273, 1}},
    {-5175360000LL,
     {1837, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1836, 11, 31, 16, 7, 2, 0, 6, 365, 0}},
    {-520819200LL,
     {1984, 6, 1, 0, 0, 0, 0, 0, 182, 0},
     {1984, 5, 30, 17, 0, 0, 0, 6, 181, 1}},
    {-5238518400LL,
     {1835, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1834, 11, 31, 16, 7, 2, 0, 3, 364, 0}},
    {-530064000LL,
     {1984, 2, 16, 0, 0, 0, 0, 5, 75, 0},
     {1984, 2, 15, 16, 0, 0, 0, 4, 74, 0}},
    {-536544000LL,
     {1984, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1983, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-539308800LL,
     {1983, 10, 30, 0, 0, 0, 0, 3, 333, 0},
     {1983, 10, 29, 16, 0, 0, 0, 2, 332, 0}},
    {-541980000LL,
     {1983, 9, 30, 2, 0, 0, 0, 0, 302, 0},
     {1983, 9, 29, 19, 0, 0, 0, 6, 301, 1}},
    {-545007600LL,
     {1983, 8, 25, 1, 0, 0, 0, 0, 267, 0},
     {1983, 8, 24, 18, 0, 0, 0, 6, 266, 1}},
    {55123200LL,
     {2002, 9, 1, 0, 0, 0, 0, 2, 273, 0},
     {2002, 8, 30, 17, 0, 0, 0, 1, 272, 1}},
    {-5522400LL,
     {2000, 9, 29, 2, 0, 0, 0, 0, 302, 0},
     {2000, 9, 28, 19, 0, 0, 0, 6, 301, 1}},
    {-557712000LL,
     {1983, 4, 1, 0, 0, 0, 0, 0, 120, 0},
     {1983, 3, 30, 17, 0, 0, 0, 6, 119, 1}},
    {-560304000LL,
     {1983, 3, 1, 0, 0, 0, 0, 5, 90, 0},
     {1983, 2, 31, 16, 0, 0, 0, 4, 89, 0}},
    {-568080000LL,
     {1983, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1982, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {-570672000LL,
     {1982, 11, 2, 0, 0, 0, 0, 4, 335, 0},
     {1982, 11, 1, 16, 0, 0, 0, 3, 334, 0}},
    {-571104000LL,
     {1982, 10, 27, 0, 0, 0, 0, 6, 330, 0},
     {1982, 10, 26, 16, 0, 0, 0, 5, 329, 0}},
    {-576453600LL,
     {1982, 8, 26, 2, 0, 0, 0, 0, 268, 0},
     {1982, 8, 25, 19, 0, 0, 0, 6, 267, 1}},
    {-589248000LL,
     {1982, 4, 1, 0, 0, 0, 0, 6, 120, 0},
     {1982, 3, 30, 17, 0, 0, 0, 5, 119, 1}},
    {-591840000LL,
     {1982, 3, 1, 0, 0, 0, 0, 4, 90, 0},
     {1982, 2, 31, 16, 0, 0, 0, 3, 89, 0}},
    {-593406000LL,
     {1982, 2, 13, 21, 0, 0, 0, 6, 71, 0},
     {1982, 2, 13, 13, 0, 0, 0, 6, 71, 0}},
    {-599616000LL,
     {1982, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1981, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-600393600LL,
     {1981, 11, 23, 0, 0, 0, 0, 3, 356, 0},
     {1981, 11, 22, 16, 0, 0, 0, 2, 355, 0}},
    {-607564800LL,
     {1981, 9, 1, 0, 0, 0, 0, 4, 273, 0},
     {1981, 8, 30, 17, 0, 0, 0, 3, 272, 1}},
    {-6134400LL,
     {2000, 9, 22, 0, 0, 0, 0, 0, 295, 0},
     {2000, 9, 21, 17, 0, 0, 0, 6, 294, 1}},
    {-620784000LL,
     {1981, 4, 1, 0, 0, 0, 0, 5, 120, 0},
     {1981, 3, 30, 17, 0, 0, 0, 4, 119, 1}},
    {-623376000LL,
     {1981, 3, 1, 0, 0, 0, 0, 3, 90, 0},
     {1981, 2, 31, 16, 0, 0, 0, 2, 89, 0}},
    {-623628000LL,
     {1981, 2, 29, 2, 0, 0, 0, 0, 87, 0},
     {1981, 2, 28, 18, 0, 0, 0, 6, 86, 0}},
    {-623635200LL,
     {1981, 2, 29, 0, 0, 0, 0, 0, 87, 0},
     {1981, 2, 28, 16, 0, 0, 0, 6, 86, 0}},
    {-626054400LL,
     {1981, 2, 1, 0, 0, 0, 0, 0, 59, 0},
     {1981, 1, 28, 16, 0, 0, 0, 6, 58, 0}},
    {63072000LL,
     {2003, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {2002, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-631152000LL,
     {1981, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1980, 11, 31, 16, 0, 0, 0, 3, 365, 0}},
    {-63158400LL,
     {1999, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1998, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-636933600LL,
     {1980, 9, 26, 2, 0, 0, 0, 0, 299, 0},
     {1980, 9, 25, 19, 0, 0, 0, 6, 298, 1}},
    {-639352800LL,
     {1980, 8, 28, 2, 0, 0, 0, 0, 271, 0},
     {1980, 8, 27, 19, 0, 0, 0, 6, 270, 1}},
    {-639360000LL,
     {1980, 8, 28, 0, 0, 0, 0, 0, 271, 0},
     {1980, 8, 27, 17, 0, 0, 0, 6, 270, 1}},
    {-652320000LL,
     {1980, 4, 1, 0, 0, 0, 0, 4, 121, 0},
     {1980, 3, 30, 17, 0, 0, 0, 3, 120, 1}},
    {-652658400LL,
     {1980, 3, 27, 2, 0, 0, 0, 0, 117, 0},
     {1980, 3, 26, 18, 0, 0, 0, 6, 116, 0}},
    {-654472800LL,
     {1980, 3, 6, 2, 0, 0, 0, 0, 96, 0},
     {1980, 3, 5, 18, 0, 0, 0, 6, 95, 0}},
    {-654480000LL,
     {1980, 3, 6, 0, 0, 0, 0, 0, 96, 0},
     {1980, 3, 5, 16, 0, 0, 0, 6, 95, 0}},
    {-656985600LL,
     {1980, 2, 8, 0, 0, 0, 0, 6, 67, 0},
     {1980, 2, 7, 16, 0, 0, 0, 5, 66, 0}},
    {-662774400LL,
     {1980, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1979, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-668563200LL,
     {1979, 9, 26, 0, 0, 0, 0, 5, 298, 0},
     {1979, 9, 25, 17, 0, 0, 0, 4, 297, 1}},
    {-669600000LL,
     {1979, 9, 14, 0, 0, 0, 0, 0, 286, 0},
     {1979, 9, 13, 17, 0, 0, 0, 6, 285, 1}},
    {-670723200LL,
     {1979, 9, 1, 0, 0, 0, 0, 1, 273, 0},
     {1979, 8, 30, 17, 0, 0, 0, 0, 272, 1}},
    {-6739200LL,
     {2000, 9, 15, 0, 0, 0, 0, 0, 288, 0},
     {2000, 9, 14, 17, 0, 0, 0, 6, 287, 1}},
    {-683942400LL,
     {1979, 4, 1, 0, 0, 0, 0, 2, 120, 0},
     {1979, 3, 30, 17, 0, 0, 0, 1, 119, 1}},
    {-684108000LL,
     {1979, 3, 29, 2, 0, 0, 0, 0, 118, 0},
     {1979, 3, 28, 18, 0, 0, 0, 6, 117, 0}},
    {-686538000LL,
     {1979, 2, 31, 23, 0, 0, 0, 6, 89, 0},
     {1979, 2, 31, 15, 0, 0, 0, 6, 89, 0}},
    {-694310400LL,
     {1979, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1978, 11, 31, 16, 0, 0, 0, 0, 364, 0}},
    {-698630400LL,
     {1978, 10, 12, 0, 0, 0, 0, 0, 315, 0},
     {1978, 10, 11, 16, 0, 0, 0, 6, 314, 0}},
    {-701049600LL,
     {1978, 9, 15, 0, 0, 0, 0, 0, 287, 0},
     {1978, 9, 14, 17, 0, 0, 0, 6, 286, 1}},
    {-702259200LL,
     {1978, 9, 1, 0, 0, 0, 0, 0, 273, 0},
     {1978, 8, 30, 17, 0, 0, 0, 6, 272, 1}},
    {-71884800LL,
     {1998, 8, 22, 0, 0, 0, 0, 2, 264, 0},
     {1998, 8, 21, 17, 0, 0, 0, 1, 263, 1}},
    {-725846400LL,
     {1978, 0, 1, 0, 0, 0, 0, 0, 0, 0},
     {1977, 11, 31, 16, 0, 0, 0, 6, 364, 0}},
    {-731116800LL,
     {1977, 10, 1, 0, 0, 0, 0, 2, 304, 0},
     {1977, 9, 31, 16, 0, 0, 0, 1, 303, 0}},
    {-731282400LL,
     {1977, 9, 30, 2, 0, 0, 0, 0, 302, 0},
     {1977, 9, 29, 19, 0, 0, 0, 6, 301, 1}},
    {-732067200LL,
     {1977, 9, 21, 0, 0, 0, 0, 5, 293, 0},
     {1977, 9, 20, 17, 0, 0, 0, 4, 292, 1}},
    {-73699200LL,
     {1998, 8, 1, 0, 0, 0, 0, 2, 243, 0},
     {1998, 7, 31, 17, 0, 0, 0, 1, 242, 1}},
    {-757382400LL,
     {1977, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1976, 11, 31, 16, 0, 0, 0, 5, 365, 0}},
    {-760060800LL,
     {1976, 11, 1, 0, 0, 0, 0, 3, 335, 0},
     {1976, 10, 30, 16, 0, 0, 0, 2, 334, 0}},
    {-76284000LL,
     {1998, 7, 2, 2, 0, 0, 0, 0, 213, 0},
     {1998, 7, 1, 19, 0, 0, 0, 6, 212, 1}},
    {-765759600LL,
     {1976, 8, 26, 1, 0, 0, 0, 0, 269, 0},
     {1976, 8, 25, 18, 0, 0, 0, 6, 268, 1}},
    {-777600LL,
     {2000, 11, 23, 0, 0, 0, 0, 6, 357, 0},
     {2000, 11, 22, 16, 0, 0, 0, 5, 356, 0}},
    {-778377600LL,
     {1976, 4, 3, 0, 0, 0, 0, 1, 123, 0},
     {1976, 4, 2, 17, 0, 0, 0, 0, 122, 1}},
    {7786800LL,
     {2001, 3, 1, 3, 0, 0, 0, 0, 90, 0},
     {2001, 2, 31, 19, 0, 0, 0, 6, 89, 0}},
    {-780019200LL,
     {1976, 3, 14, 0, 0, 0, 0, 3, 104, 0},
     {1976, 3, 13, 16, 0, 0, 0, 2, 103, 0}},
    {-789004800LL,
     {1976, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1975, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-792194400LL,
     {1975, 10, 25, 2, 0, 0, 0, 2, 328, 0},
     {1975, 10, 24, 18, 0, 0, 0, 1, 327, 0}},
    {-792633600LL,
     {1975, 10, 20, 0, 0, 0, 0, 4, 323, 0},
     {1975, 10, 19, 16, 0, 0, 0, 3, 322, 0}},
    {-802310400LL,
     {1975, 6, 31, 0, 0, 0, 0, 4, 211, 0},
     {1975, 6, 30, 17, 0, 0, 0, 3, 210, 1}},
    {-810511200LL,
     {1975, 3, 27, 2, 0, 0, 0, 0, 116, 0},
     {1975, 3, 26, 19, 0, 0, 0, 6, 115, 1}},
    {-816566400LL,
     {1975, 1, 16, 0, 0, 0, 0, 0, 46, 0},
     {1975, 1, 15, 16, 0, 0, 0, 6, 45, 0}},
    {-820540800LL,
     {1975, 0, 1, 0, 0, 0, 0, 3, 0, 0},
     {1974, 11, 31, 16, 0, 0, 0, 2, 364, 0}},
    {-826236000LL,
     {1974, 9, 27, 2, 0, 0, 0, 0, 299, 0},
     {1974, 9, 26, 19, 0, 0, 0, 6, 298, 1}},
    {-826243200LL,
     {1974, 9, 27, 0, 0, 0, 0, 0, 299, 0},
     {1974, 9, 26, 17, 0, 0, 0, 6, 298, 1}},
    {-841960800LL,
     {1974, 3, 28, 2, 0, 0, 0, 0, 117, 0},
     {1974, 3, 27, 19, 0, 0, 0, 6, 116, 1}},
    {-844300800LL,
     {1974, 3, 1, 0, 0, 0, 0, 1, 90, 0},
     {1974, 2, 31, 17, 0, 0, 0, 0, 89, 1}},
    {-84672000LL,
     {1998, 3, 27, 0, 0, 0, 0, 1, 116, 0},
     {1998, 3, 26, 17, 0, 0, 0, 0, 115, 1}},
    {-849218400LL,
     {1974, 1, 3, 2, 0, 0, 0, 0, 33, 0},
     {1974, 1, 2, 19, 0, 0, 0, 6, 32, 1}},
    {-851637600LL,
     {1974, 0, 6, 2, 0, 0, 0, 0, 5, 0},
     {1974, 0, 5, 18, 0, 0, 0, 6, 4, 0}},
    {-852076800LL,
     {1974, 0, 1, 0, 0, 0, 0, 2, 0, 0},
     {1973, 11, 31, 16, 0, 0, 0, 1, 364, 0}},
    {-857692800LL,
     {1973, 9, 28, 0, 0, 0, 0, 0, 300, 0},
     {1973, 9, 27, 17, 0, 0, 0, 6, 299, 1}},
    {86054400LL,
     {2003, 8, 24, 0, 0, 0, 0, 3, 266, 0},
     {2003, 8, 23, 17, 0, 0, 0, 2, 265, 1}},
    {86400LL,
     {2001, 0, 2, 0, 0, 0, 0, 2, 1, 0},
     {2001, 0, 1, 16, 0, 0, 0, 1, 0, 0}},
    {-86562000LL,
     {1998, 3, 5, 3, 0, 0, 0, 0, 94, 0},
     {1998, 3, 4, 19, 0, 0, 0, 6, 93, 0}},
    {-87174000LL,
     {1998, 2, 29, 1, 0, 0, 0, 0, 87, 0},
     {1998, 2, 28, 17, 0, 0, 0, 6, 86, 0}},
    {-873244800LL,
     {1973, 4, 1, 0, 0, 0, 0, 2, 120, 0},
     {1973, 3, 30, 17, 0, 0, 0, 1, 119, 1}},
    {-873410400LL,
     {1973, 3, 29, 2, 0, 0, 0, 0, 118, 0},
     {1973, 3, 28, 18, 0, 0, 0, 6, 117, 0}},
    {-875923200LL,
     {1973, 2, 31, 0, 0, 0, 0, 6, 89, 0},
     {1973, 2, 30, 16, 0, 0, 0, 5, 88, 0}},
    {-883612800LL,
     {1973, 0, 1, 0, 0, 0, 0, 1, 0, 0},
     {1972, 11, 31, 16, 0, 0, 0, 0, 365, 0}},
    {88826400LL,
     {2003, 9, 26, 2, 0, 0, 0, 0, 298, 0},
     {2003, 9, 25, 19, 0, 0, 0, 6, 297, 1}},
    {-891561600LL,
     {1972, 9, 1, 0, 0, 0, 0, 0, 274, 0},
     {1972, 8, 30, 17, 0, 0, 0, 6, 273, 1}},
    {-894319200LL,
     {1972, 7, 30, 2, 0, 0, 0, 3, 242, 0},
     {1972, 7, 29, 19, 0, 0, 0, 2, 241, 1}},
    {-902102400LL,
     {1972, 5, 1, 0, 0, 0, 0, 4, 152, 0},
     {1972, 4, 31, 17, 0, 0, 0, 3, 151, 1}},
    {-904780800LL,
     {1972, 4, 1, 0, 0, 0, 0, 1, 121, 0},
     {1972, 3, 30, 17, 0, 0, 0, 0, 120, 1}},
    {-904860000LL,
     {1972, 3, 30, 2, 0, 0, 0, 0, 120, 0},
     {1972, 3, 29, 18, 0, 0, 0, 6, 119, 0}},
    {-915235200LL,
     {1972, 0, 1, 0, 0, 0, 0, 6, 0, 0},
     {1971, 11, 31, 16, 0, 0, 0, 5, 364, 0}},
    {-9158400LL,
     {2000, 8, 17, 0, 0, 0, 0, 0, 260, 0},
     {2000, 8, 16, 17, 0, 0, 0, 6, 259, 1}},
    {-920584800LL,
     {1971, 9, 31, 2, 0, 0, 0, 0, 303, 0},
     {1971, 9, 30, 19, 0, 0, 0, 6, 302, 1}},
    {-931132800LL,
     {1971, 6, 1, 0, 0, 0, 0, 4, 181, 0},
     {1971, 5, 30, 17, 0, 0, 0, 3, 180, 1}},
    {-939513600LL,
     {1971, 2, 26, 0, 0, 0, 0, 5, 84, 0},
     {1971, 2, 25, 16, 0, 0, 0, 4, 83, 0}},
    {-946771200LL,
     {1971, 0, 1, 0, 0, 0, 0, 5, 0, 0},
     {1970, 11, 31, 16, 0, 0, 0, 4, 364, 0}},
    {-94694400LL,
     {1998, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1997, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {94694400LL,
     {2004, 0, 2, 0, 0, 0, 0, 5, 1, 0},
     {2004, 0, 1, 16, 0, 0, 0, 4, 0, 0}},
    {-978307200LL,
     {1970, 0, 1, 0, 0, 0, 0, 4, 0, 0},
     {1969, 11, 31, 16, 0, 0, 0, 3, 364, 0}},
    {-985910400LL,
     {1969, 9, 5, 0, 0, 0, 0, 0, 277, 0},
     {1969, 9, 4, 17, 0, 0, 0, 6, 276, 1}},
    {-986256000LL,
     {1969, 9, 1, 0, 0, 0, 0, 3, 273, 0},
     {1969, 8, 30, 17, 0, 0, 0, 2, 272, 1}},
    {-999813600LL,
     {1969, 3, 27, 2, 0, 0, 0, 0, 116, 0},
     {1969, 3, 26, 18, 0, 0, 0, 6, 115, 0}},
};

DATE_FORMAT_TEST TestDateFormatCase[] = {
    {
     {1968, 9, 26, 17, 23, 58, 59, 6, 299, 1, -7 * 3600, "PDT"},
     197,
     EXHAUSTIVE_DATE_FORMAT,
     "Sat Saturday Oct October Sat Oct 26 17:23:58 1968 19 26 10/26/68 26 "
     "1968-10-26 68 1968 Oct 17 05 300 10 23 PM pm 05:23:58 PM 17:23 58 "
     "17:23:58 6 42 43 6 43 10/26/68 17:23:58 68 1968 -0700 PDT %.\n\t."
    },
    {
     {2006, 3, 1, 18, 1, 2, 3, 6, 90, 0, -8 * 3600, "PST"},
     195,
     EXHAUSTIVE_DATE_FORMAT,
     "Sat Saturday Apr April Sat Apr  1 18:01:02 2006 20 01 04/01/06  1 "
     "2006-04-01 06 2006 Apr 18 06 091 04 01 PM pm 06:01:02 PM 18:01 02 "
     "18:01:02 6 13 13 6 13 04/01/06 18:01:02 06 2006 -0800 PST %.\n\t."
    },
    {
     {5678, 0, 1, 1, 1, 2, 3, 6, 0, 0, -8 * 3600, "PST"},
     197,
     EXHAUSTIVE_DATE_FORMAT,
     "Sat Saturday Jan January Sat Jan  1 01:01:02 5678 56 01 01/01/78  1 "
     "5678-01-01 77 5677 Jan 01 01 001 01 01 AM am 01:01:02 AM 01:01 02 "
     "01:01:02 6 00 52 6 00 01/01/78 01:01:02 78 5678 -0800 PST %.\n\t."
    },
    {
     {2010, 0, 1, 1, 1, 2, 3, 5, 0, 0, -8 * 3600, "PST"},
     195,
     EXHAUSTIVE_DATE_FORMAT,
     "Fri Friday Jan January Fri Jan  1 01:01:02 2010 20 01 01/01/10  1 "
     "2010-01-01 09 2009 Jan 01 01 001 01 01 AM am 01:01:02 AM 01:01 02 "
     "01:01:02 5 00 53 5 00 01/01/10 01:01:02 10 2010 -0800 PST %.\n\t."
    },
    {
     {2011, 0, 1, 2, 1, 8, 3, 6, 0, 0, -8 * 3600, "PST"},
     197,
     EXHAUSTIVE_DATE_FORMAT,
     "Sat Saturday Jan January Sat Jan  1 02:01:08 2011 20 01 01/01/11  1 "
     "2011-01-01 10 2010 Jan 02 02 001 01 01 AM am 02:01:08 AM 02:01 08 "
     "02:01:08 6 00 52 6 00 01/01/11 02:01:08 11 2011 -0800 PST %.\n\t."
    },
    {
     {2012, 0, 1, 2, 13, 16, 37, 0, 0, 0, -8 * 3600, "PST"},
     195,
     EXHAUSTIVE_DATE_FORMAT,
     "Sun Sunday Jan January Sun Jan  1 02:13:16 2012 20 01 01/01/12  1 "
     "2012-01-01 11 2011 Jan 02 02 001 01 13 AM am 02:13:16 AM 02:13 16 "
     "02:13:16 7 01 52 0 00 01/01/12 02:13:16 12 2012 -0800 PST %.\n\t."
    },
    {
     {2012, 5, 7, 2, 13, 16, 37, 4, 158, 0, -8 * 3600, "PST"},
     194,
     EXHAUSTIVE_DATE_FORMAT,
     "Thu Thursday Jun June Thu Jun  7 02:13:16 2012 20 07 06/07/12  7 "
     "2012-06-07 12 2012 Jun 02 02 159 06 13 AM am 02:13:16 AM 02:13 16 "
     "02:13:16 4 23 23 4 23 06/07/12 02:13:16 12 2012 -0800 PST %.\n\t."
    },
};

CHAR TestTimeBuffer[1024];

//
// ------------------------------------------------------------------ Functions
//

ULONG
TestTime (
    VOID
    )

/*++

Routine Description:

    This routine tests the time functions in the runtime library.

Arguments:

    None.

Return Value:

    Returns the number of test failures.

--*/

{

    PCALENDAR_TEST CalendarTest;
    CALENDAR_TIME CalendarTime;
    SYSTEM_TIME ComputedSystemTime;
    ULONG Failures;
    UINTN FormatSize;
    PDATE_FORMAT_TEST FormatTest;
    BOOL Match;
    PVOID OldData;
    ULONG OldDataSize;
    CALENDAR_TIME ScannedTime;
    PSTR ScanResult;
    UINTN Size;
    KSTATUS Status;
    SYSTEM_TIME SystemTime;
    ULONG TestCount;
    ULONG TestIndex;

    Failures = 0;

    //
    // Initialize time zone support in the runtime library.
    //

    RtlInitializeTimeZoneSupport(TestTimeZoneLockFunction,
                                 TestTimeZoneLockFunction,
                                 (PTIME_ZONE_REALLOCATE_FUNCTION)realloc);

    Status = RtlSetTimeZoneData(TestTimeZoneData,
                                sizeof(TestTimeZoneData),
                                NULL,
                                &OldData,
                                &OldDataSize,
                                NULL,
                                NULL);

    if (!KSUCCESS(Status)) {
        printf("Timetest: Failed to set timezone data %d.\n", Status);
        Failures += 1;
    }

    SystemTime.Nanoseconds = 0;
    TestCount = sizeof(TestCalendarCase) / sizeof(TestCalendarCase[0]);
    for (TestIndex = 0; TestIndex < TestCount; TestIndex += 1) {
        CalendarTest = &(TestCalendarCase[TestIndex]);
        SystemTime.Seconds = CalendarTest->Seconds;
        Status = RtlSystemTimeToGmtCalendarTime(&SystemTime, &CalendarTime);
        if (!KSUCCESS(Status)) {
            printf("TimeTest: Failed to convert system time %lld to "
                   "GMT calendar time.\n",
                   SystemTime.Seconds);

            Failures += 1;
        }

        if ((CalendarTime.Year != CalendarTest->GmtTime.Year) ||
            (CalendarTime.Month != CalendarTest->GmtTime.Month) ||
            (CalendarTime.Day != CalendarTest->GmtTime.Day) ||
            (CalendarTime.Hour != CalendarTest->GmtTime.Hour) ||
            (CalendarTime.Minute != CalendarTest->GmtTime.Minute) ||
            (CalendarTime.Second != CalendarTest->GmtTime.Second) ||
            (CalendarTime.Nanosecond != CalendarTest->GmtTime.Nanosecond) ||
            (CalendarTime.Weekday != CalendarTest->GmtTime.Weekday) ||
            (CalendarTime.YearDay != CalendarTest->GmtTime.YearDay) ||
            (CalendarTime.IsDaylightSaving !=
             CalendarTest->GmtTime.IsDaylightSaving)) {

            printf("TimeTest: Convert %lld to GMT failed.\n"
                   "Was     : %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n"
                   "Expected: %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n",
                   SystemTime.Seconds,
                   CalendarTime.Year,
                   CalendarTime.Month + 1,
                   CalendarTime.Day,
                   CalendarTime.Hour,
                   CalendarTime.Minute,
                   CalendarTime.Second,
                   CalendarTime.Nanosecond,
                   CalendarTime.Weekday,
                   CalendarTime.YearDay,
                   CalendarTime.IsDaylightSaving,
                   CalendarTest->GmtTime.Year,
                   CalendarTest->GmtTime.Month + 1,
                   CalendarTest->GmtTime.Day,
                   CalendarTest->GmtTime.Hour,
                   CalendarTest->GmtTime.Minute,
                   CalendarTest->GmtTime.Second,
                   CalendarTest->GmtTime.Nanosecond,
                   CalendarTest->GmtTime.Weekday,
                   CalendarTest->GmtTime.YearDay,
                   CalendarTest->GmtTime.IsDaylightSaving);

            Failures += 1;
        }

        Status = RtlCalendarTimeToSystemTime(&CalendarTime,
                                             &ComputedSystemTime);

        if (!KSUCCESS(Status)) {
            printf("TimeTest: Failed to convert GMT calendar time back into "
                   "system time.\n");

            Failures += 1;
        }

        if ((ComputedSystemTime.Seconds != SystemTime.Seconds) ||
            (ComputedSystemTime.Nanoseconds != SystemTime.Nanoseconds)) {

            printf("TimeTest: Error: System time %lld.%d converted back into "
                   "%lld.%d through GMT calendar time.\n",
                   SystemTime.Seconds,
                   SystemTime.Nanoseconds,
                   ComputedSystemTime.Seconds,
                   ComputedSystemTime.Nanoseconds);

            Failures += 1;
        }

        //
        // Convert the calendar time to and from a string, and make sure it's
        // consistent.
        //

        FormatSize = RtlFormatDate(TestTimeBuffer,
                                   sizeof(TestTimeBuffer),
                                   COMPLETE_DATE_FORMAT,
                                   &(CalendarTest->GmtTime));

        if (FormatSize != RtlStringLength(TestTimeBuffer)) {
            printf("TimeTest: FormatSize %lu, strlen: %d\n",
                   FormatSize,
                   RtlStringLength(TestTimeBuffer));

            Failures += 1;
        }

        ScanResult = RtlScanDate(TestTimeBuffer,
                                 COMPLETE_DATE_FORMAT,
                                 &ScannedTime);

        if ((ScanResult == NULL) || (RtlStringLength(ScanResult) != 0)) {
            printf("TimeTest: After scanning, had extra or null string "
                   "\"%s\".\n",
                   ScanResult);

            Failures += 1;
        }

        ScannedTime.IsDaylightSaving = CalendarTest->GmtTime.IsDaylightSaving;
        if ((ScannedTime.Year != CalendarTest->GmtTime.Year) ||
            (ScannedTime.Month != CalendarTest->GmtTime.Month) ||
            (ScannedTime.Day != CalendarTest->GmtTime.Day) ||
            (ScannedTime.Hour != CalendarTest->GmtTime.Hour) ||
            (ScannedTime.Minute != CalendarTest->GmtTime.Minute) ||
            (ScannedTime.Second != CalendarTest->GmtTime.Second) ||
            (ScannedTime.Nanosecond != CalendarTest->GmtTime.Nanosecond) ||
            (ScannedTime.Weekday != CalendarTest->GmtTime.Weekday) ||
            (ScannedTime.YearDay != CalendarTest->GmtTime.YearDay)) {

            printf("TimeTest: Scan date failed.\n"
                   "Was     : %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n"
                   "Expected: %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n",
                   ScannedTime.Year,
                   ScannedTime.Month + 1,
                   ScannedTime.Day,
                   ScannedTime.Hour,
                   ScannedTime.Minute,
                   ScannedTime.Second,
                   ScannedTime.Nanosecond,
                   ScannedTime.Weekday,
                   ScannedTime.YearDay,
                   ScannedTime.IsDaylightSaving,
                   CalendarTest->GmtTime.Year,
                   CalendarTest->GmtTime.Month + 1,
                   CalendarTest->GmtTime.Day,
                   CalendarTest->GmtTime.Hour,
                   CalendarTest->GmtTime.Minute,
                   CalendarTest->GmtTime.Second,
                   CalendarTest->GmtTime.Nanosecond,
                   CalendarTest->GmtTime.Weekday,
                   CalendarTest->GmtTime.YearDay,
                   CalendarTest->GmtTime.IsDaylightSaving);

            Failures += 1;
        }

        //
        // Convert the calendar time to and from a string again with an
        // alternate format.
        //

        RtlZeroMemory(&ScannedTime, sizeof(CALENDAR_TIME));
        RtlFormatDate(TestTimeBuffer,
                      sizeof(TestTimeBuffer),
                      COMPLETE_DATE_FORMAT2,
                      &(CalendarTest->GmtTime));

        ScanResult = RtlScanDate(TestTimeBuffer,
                                 COMPLETE_DATE_FORMAT2,
                                 &ScannedTime);

        if ((ScanResult == NULL) || (RtlStringLength(ScanResult) != 0)) {
            printf("TimeTest: After scanning, had extra or null string "
                   "\"%s\".\n",
                   ScanResult);

            Failures += 1;
        }

        ScannedTime.IsDaylightSaving = CalendarTest->GmtTime.IsDaylightSaving;
        if ((ScannedTime.Year != CalendarTest->GmtTime.Year) ||
            (ScannedTime.Month != CalendarTest->GmtTime.Month) ||
            (ScannedTime.Day != CalendarTest->GmtTime.Day) ||
            (ScannedTime.Hour != CalendarTest->GmtTime.Hour) ||
            (ScannedTime.Minute != CalendarTest->GmtTime.Minute) ||
            (ScannedTime.Second != CalendarTest->GmtTime.Second) ||
            (ScannedTime.Nanosecond != CalendarTest->GmtTime.Nanosecond) ||
            (ScannedTime.Weekday != CalendarTest->GmtTime.Weekday) ||
            (ScannedTime.YearDay != CalendarTest->GmtTime.YearDay)) {

            printf("TimeTest: Scan date failed.\n"
                   "Was     : %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n"
                   "Expected: %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n",
                   ScannedTime.Year,
                   ScannedTime.Month + 1,
                   ScannedTime.Day,
                   ScannedTime.Hour,
                   ScannedTime.Minute,
                   ScannedTime.Second,
                   ScannedTime.Nanosecond,
                   ScannedTime.Weekday,
                   ScannedTime.YearDay,
                   ScannedTime.IsDaylightSaving,
                   CalendarTest->GmtTime.Year,
                   CalendarTest->GmtTime.Month + 1,
                   CalendarTest->GmtTime.Day,
                   CalendarTest->GmtTime.Hour,
                   CalendarTest->GmtTime.Minute,
                   CalendarTest->GmtTime.Second,
                   CalendarTest->GmtTime.Nanosecond,
                   CalendarTest->GmtTime.Weekday,
                   CalendarTest->GmtTime.YearDay,
                   CalendarTest->GmtTime.IsDaylightSaving);

            Failures += 1;
        }

#if 0

        RtlDebugPrint("    {%lldLL,\n"
                      "     {%d, %d, %d, %d, %d, %d, %d, %d, %d, %d},\n",
                      SystemTime.Seconds,
                      CalendarTime.Year,
                      CalendarTime.Month,
                      CalendarTime.Day,
                      CalendarTime.Hour,
                      CalendarTime.Minute,
                      CalendarTime.Second,
                      CalendarTime.Nanosecond,
                      CalendarTime.Weekday,
                      CalendarTime.YearDay,
                      CalendarTime.IsDaylightSaving);

#endif

        Status = RtlSystemTimeToLocalCalendarTime(&SystemTime, &CalendarTime);
        if (!KSUCCESS(Status)) {
            printf("TimeTest: Failed to convert system time %lld to "
                   "local calendar time.\n",
                   SystemTime.Seconds);

            Failures += 1;
        }

        if ((CalendarTime.Year != CalendarTest->LocalTime.Year) ||
            (CalendarTime.Month != CalendarTest->LocalTime.Month) ||
            (CalendarTime.Day != CalendarTest->LocalTime.Day) ||
            (CalendarTime.Hour != CalendarTest->LocalTime.Hour) ||
            (CalendarTime.Minute != CalendarTest->LocalTime.Minute) ||
            (CalendarTime.Second != CalendarTest->LocalTime.Second) ||
            (CalendarTime.Nanosecond != CalendarTest->LocalTime.Nanosecond) ||
            (CalendarTime.Weekday != CalendarTest->LocalTime.Weekday) ||
            (CalendarTime.YearDay != CalendarTest->LocalTime.YearDay) ||
            (CalendarTime.IsDaylightSaving !=
             CalendarTest->LocalTime.IsDaylightSaving)) {

            printf("TimeTest: Convert %lld to local time failed.\n"
                   "Was     : %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n"
                   "Expected: %04d/%02d/%02d %02d:%02d:%02d.%d %d %3d %d\n",
                   SystemTime.Seconds,
                   CalendarTime.Year,
                   CalendarTime.Month + 1,
                   CalendarTime.Day,
                   CalendarTime.Hour,
                   CalendarTime.Minute,
                   CalendarTime.Second,
                   CalendarTime.Nanosecond,
                   CalendarTime.Weekday,
                   CalendarTime.YearDay,
                   CalendarTime.IsDaylightSaving,
                   CalendarTest->LocalTime.Year,
                   CalendarTest->LocalTime.Month + 1,
                   CalendarTest->LocalTime.Day,
                   CalendarTest->LocalTime.Hour,
                   CalendarTest->LocalTime.Minute,
                   CalendarTest->LocalTime.Second,
                   CalendarTest->LocalTime.Nanosecond,
                   CalendarTest->LocalTime.Weekday,
                   CalendarTest->LocalTime.YearDay,
                   CalendarTest->LocalTime.IsDaylightSaving);

            Failures += 1;
        }

        Status = RtlCalendarTimeToSystemTime(&CalendarTime,
                                             &ComputedSystemTime);

        if (!KSUCCESS(Status)) {
            printf("TimeTest: Failed to convert local calendar time back into "
                   "system time.\n");

            Failures += 1;
        }

        if ((ComputedSystemTime.Seconds != SystemTime.Seconds) ||
            (ComputedSystemTime.Nanoseconds != SystemTime.Nanoseconds)) {

            printf("TimeTest: Error: System time %lld.%d converted back into "
                   "%lld.%d through local calendar time.\n",
                   SystemTime.Seconds,
                   SystemTime.Nanoseconds,
                   ComputedSystemTime.Seconds,
                   ComputedSystemTime.Nanoseconds);

            Failures += 1;
        }

#if 0

        RtlDebugPrint("     {%d, %d, %d, %d, %d, %d, %d, %d, %d, %d}},\n",
                      CalendarTime.Year,
                      CalendarTime.Month,
                      CalendarTime.Day,
                      CalendarTime.Hour,
                      CalendarTime.Minute,
                      CalendarTime.Second,
                      CalendarTime.Nanosecond,
                      CalendarTime.Weekday,
                      CalendarTime.YearDay,
                      CalendarTime.IsDaylightSaving);

#endif

    }

    //
    // Try converting a couple times to a string.
    //

    TestCount = sizeof(TestDateFormatCase) / sizeof(TestDateFormatCase[0]);
    for (TestIndex = 0; TestIndex < TestCount; TestIndex += 1) {
        FormatTest = &(TestDateFormatCase[TestIndex]);
        Size = RtlFormatDate(TestTimeBuffer,
                             sizeof(TestTimeBuffer),
                             FormatTest->Format,
                             &(FormatTest->CalendarTime));

        if (Size != FormatTest->StringSize) {
            printf("TimeTest: Error: Format size for test %d was %lu, "
                   "expected %lu.\n",
                   TestIndex,
                   Size,
                   FormatTest->StringSize);

            Failures += 1;
        }

        Match = RtlAreStringsEqual(TestTimeBuffer,
                                   FormatTest->Result,
                                   sizeof(TestTimeBuffer));

        if (Match == FALSE) {
            printf("TimeTest: Format time result:\n"
                   "Was     : %s\n"
                   "Expected: %s\n",
                   TestTimeBuffer,
                   FormatTest->Result);

            Failures += 1;
        }
    }

    //
    // Try converting a couple strings to times.
    //

    RtlPrintToString(TestTimeBuffer,
                     sizeof(TestTimeBuffer),
                     CharacterEncodingAscii,
                     "Wed, 8 Jan 1986 08:13:47 GMT");

    ScanResult = RtlScanDate(TestTimeBuffer,
                             "%a, %d %b %Y %T",
                             &ScannedTime);

    if (ScanResult == NULL) {
        printf("Failed to scan fixed date!\n");
        Failures += 1;
    }

    if (Failures != 0) {
        printf("\n\n%d Time test failures.\n\n", Failures);
    }

    return Failures;
}

//
// --------------------------------------------------------- Internal Functions
//

VOID
TestTimeZoneLockFunction (
    )

/*++

Routine Description:

    This routine implements no-op versions of the acquire and release time
    zone lock functions.

Arguments:

    None.

Return Value:

    None.

--*/

{

    return;
}

